make assertions debug only
This commit is contained in:
parent
37e8a6e721
commit
e2d5208025
|
@ -40,7 +40,7 @@ mod util {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(ptr: *mut T, tag: usize) -> TaggedAtomicPtr<T, BITS> {
|
pub fn new(ptr: *mut T, tag: usize) -> TaggedAtomicPtr<T, BITS> {
|
||||||
assert!(core::mem::align_of::<T>().ilog2() as usize >= BITS);
|
debug_assert!(core::mem::align_of::<T>().ilog2() as usize >= BITS);
|
||||||
let mask = Self::mask();
|
let mask = Self::mask();
|
||||||
Self(
|
Self(
|
||||||
AtomicPtr::new(ptr.with_addr((ptr.addr() & !mask) | (tag & mask)).cast()),
|
AtomicPtr::new(ptr.with_addr((ptr.addr() & !mask) | (tag & mask)).cast()),
|
||||||
|
@ -524,7 +524,7 @@ mod job {
|
||||||
) {
|
) {
|
||||||
// if still pending, sleep until completed
|
// if still pending, sleep until completed
|
||||||
Ok(state) => {
|
Ok(state) => {
|
||||||
assert_eq!(state, JobState::Pending as usize);
|
debug_assert_eq!(state, JobState::Pending as usize);
|
||||||
unsafe {
|
unsafe {
|
||||||
*(&mut *self.err_or_link.get()).waker = Some(std::thread::current());
|
*(&mut *self.err_or_link.get()).waker = Some(std::thread::current());
|
||||||
}
|
}
|
||||||
|
@ -541,7 +541,7 @@ mod job {
|
||||||
// after sleeping, state should be `Finished`
|
// after sleeping, state should be `Finished`
|
||||||
}
|
}
|
||||||
Err(state) => {
|
Err(state) => {
|
||||||
assert_ne!(state, JobState::Pending as usize);
|
debug_assert_ne!(state, JobState::Pending as usize);
|
||||||
|
|
||||||
if state == JobState::Finished as usize {
|
if state == JobState::Finished as usize {
|
||||||
let err = unsafe { (&mut *self.err_or_link.get()).error.take() };
|
let err = unsafe { (&mut *self.err_or_link.get()).error.take() };
|
||||||
|
@ -559,11 +559,6 @@ mod job {
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
// spin until lock is released.
|
// spin until lock is released.
|
||||||
// eprintln!(
|
|
||||||
// "wait({:?}): spinning ({:?})",
|
|
||||||
// self as *const _,
|
|
||||||
// JobState::from_u8(state as u8).unwrap()
|
|
||||||
// );
|
|
||||||
spin.spin();
|
spin.spin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -582,7 +577,7 @@ mod job {
|
||||||
Ordering::Relaxed,
|
Ordering::Relaxed,
|
||||||
) {
|
) {
|
||||||
Ok(state) => {
|
Ok(state) => {
|
||||||
assert_eq!(state, JobState::Empty as usize);
|
debug_assert_eq!(state, JobState::Empty as usize);
|
||||||
// set waker to None
|
// set waker to None
|
||||||
unsafe {
|
unsafe {
|
||||||
(&mut *self.err_or_link.get()).waker = ManuallyDrop::new(None);
|
(&mut *self.err_or_link.get()).waker = ManuallyDrop::new(None);
|
||||||
|
@ -590,7 +585,7 @@ mod job {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Err(state) => {
|
Err(state) => {
|
||||||
assert_ne!(state, JobState::Empty as usize);
|
debug_assert_ne!(state, JobState::Empty as usize);
|
||||||
|
|
||||||
eprintln!("######## what the sigma?");
|
eprintln!("######## what the sigma?");
|
||||||
spin.spin();
|
spin.spin();
|
||||||
|
@ -603,7 +598,7 @@ mod job {
|
||||||
// SAFETY: self is non-null
|
// SAFETY: self is non-null
|
||||||
unsafe {
|
unsafe {
|
||||||
let (ptr, state) = self.harness_and_state.ptr_and_tag(Ordering::Relaxed);
|
let (ptr, state) = self.harness_and_state.ptr_and_tag(Ordering::Relaxed);
|
||||||
assert_eq!(state, JobState::Pending as usize);
|
debug_assert_eq!(state, JobState::Pending as usize);
|
||||||
|
|
||||||
let harness: unsafe fn(*const (), *const Self) = mem::transmute(ptr.as_ptr());
|
let harness: unsafe fn(*const (), *const Self) = mem::transmute(ptr.as_ptr());
|
||||||
let this = (*self.val_or_this.get()).this;
|
let this = (*self.val_or_this.get()).this;
|
||||||
|
@ -622,11 +617,11 @@ mod job {
|
||||||
Ordering::Relaxed,
|
Ordering::Relaxed,
|
||||||
) {
|
) {
|
||||||
Ok(state) => {
|
Ok(state) => {
|
||||||
assert_eq!(state, JobState::Pending as usize);
|
debug_assert_eq!(state, JobState::Pending as usize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Err(state) => {
|
Err(state) => {
|
||||||
assert_ne!(state, JobState::Pending as usize);
|
debug_assert_ne!(state, JobState::Pending as usize);
|
||||||
spin.spin();
|
spin.spin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue