summaryrefslogtreecommitdiff
path: root/crates/alloc_buddy/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/alloc_buddy/src/lib.rs')
-rw-r--r--crates/alloc_buddy/src/lib.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/alloc_buddy/src/lib.rs b/crates/alloc_buddy/src/lib.rs
index d0d4818..fc5d17e 100644
--- a/crates/alloc_buddy/src/lib.rs
+++ b/crates/alloc_buddy/src/lib.rs
@@ -44,12 +44,12 @@
extern crate std; // TODO: Remove me
-mod bitvec;
+mod bitset;
mod free_list;
mod tree;
use crate::{
- bitvec::{Bitset, SubregionStatus},
+ bitset::{Bitset, SubregionStatus},
free_list::{FreeList, FreeListNode},
tree::Tree,
};
@@ -230,7 +230,9 @@ impl<
unsafe { free_list.push(tree.base_ptr.unwrap().cast()) };
// Then, set a bit in the bitset to say that this region is present.
- tree.bitset_mark_as_present(bitset, tree.size_class, 0);
+ let Ok(()) = tree.bitset_mark_as_present(bitset, tree.size_class, 0) else {
+ panic!("the first bit was already set in {tree:#?}\nbitset = {bitset:?}")
+ };
}
}
@@ -253,7 +255,9 @@ impl<
let tree = &mut self.trees[tree_index];
// Mark the pointer as no longer being in the tree.
- tree.bitset_mark_as_absent(&mut self.bitset, size_class, offset);
+ let Ok(()) = tree.bitset_mark_as_absent(self.bitset, size_class, offset) else {
+ panic!("the bit for tree {tree_index}, offset {offset} was not set in {self:#?}")
+ };
// Return the pointer.
Ok(ptr)
@@ -289,7 +293,9 @@ impl<
}
// Mark the pointer as being in the tree.
- tree.bitset_mark_as_present(&mut self.bitset, size_class, offset);
+ let Ok(()) = tree.bitset_mark_as_present(self.bitset, size_class, offset) else {
+ panic!("the bit for tree {tree_index}, offset {offset} was already set in {self:#?}")
+ };
// Return the pointer to the appropriate free list.
self.free_list(size_class).push(ptr);