aboutsummaryrefslogtreecommitdiff
path: root/src/util/slab/stack.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/slab/stack.rs')
-rw-r--r--src/util/slab/stack.rs58
1 files changed, 0 insertions, 58 deletions
diff --git a/src/util/slab/stack.rs b/src/util/slab/stack.rs
deleted file mode 100644
index 0ae0d71..0000000
--- a/src/util/slab/stack.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-use crate::loom::sync::atomic::AtomicUsize;
-use crate::util::slab::Address;
-
-use std::fmt;
-use std::sync::atomic::Ordering;
-use std::usize;
-
-pub(super) struct TransferStack {
- head: AtomicUsize,
-}
-
-impl TransferStack {
- pub(super) fn new() -> Self {
- Self {
- head: AtomicUsize::new(Address::NULL),
- }
- }
-
- pub(super) fn pop_all(&self) -> Option<usize> {
- let val = self.head.swap(Address::NULL, Ordering::Acquire);
-
- if val == Address::NULL {
- None
- } else {
- Some(val)
- }
- }
-
- pub(super) fn push(&self, value: usize, before: impl Fn(usize)) {
- let mut next = self.head.load(Ordering::Relaxed);
-
- loop {
- before(next);
-
- match self
- .head
- .compare_exchange(next, value, Ordering::AcqRel, Ordering::Acquire)
- {
- // lost the race!
- Err(actual) => next = actual,
- Ok(_) => return,
- }
- }
- }
-}
-
-impl fmt::Debug for TransferStack {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- // Loom likes to dump all its internal state in `fmt::Debug` impls, so
- // we override this to just print the current value in tests.
- f.debug_struct("TransferStack")
- .field(
- "head",
- &format_args!("{:#x}", self.head.load(Ordering::Relaxed)),
- )
- .finish()
- }
-}