From 844f3b29d39c3fadcf4e89dd3accf8be00b25de5 Mon Sep 17 00:00:00 2001 From: Corwin Date: Tue, 13 Feb 2024 18:43:37 +0000 Subject: [PATCH 1/2] Remove global alloc support from the bump allocator Signed-off-by: Corwin --- agb/src/agb_alloc/bump_allocator.rs | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/agb/src/agb_alloc/bump_allocator.rs b/agb/src/agb_alloc/bump_allocator.rs index 2c154d48..24a8a3de 100644 --- a/agb/src/agb_alloc/bump_allocator.rs +++ b/agb/src/agb_alloc/bump_allocator.rs @@ -1,10 +1,7 @@ -use core::alloc::{GlobalAlloc, Layout}; -use core::cell::RefCell; +use core::alloc::Layout; use core::ptr::NonNull; use super::SendNonNull; -use crate::interrupt::free; -use bare_metal::Mutex; pub(crate) struct StartEnd { pub start: fn() -> usize, @@ -16,10 +13,6 @@ pub(crate) struct BumpAllocatorInner { start_end: StartEnd, } -pub(crate) struct BumpAllocator { - inner: Mutex>, -} - impl BumpAllocatorInner { pub const fn new(start_end: StartEnd) -> Self { Self { @@ -58,20 +51,3 @@ impl BumpAllocatorInner { NonNull::new(resulting_ptr as *mut _) } } - -impl BumpAllocator { - fn alloc_safe(&self, layout: Layout) -> Option> { - free(|key| self.inner.borrow(key).borrow_mut().alloc(layout)) - } -} - -unsafe impl GlobalAlloc for BumpAllocator { - unsafe fn alloc(&self, layout: Layout) -> *mut u8 { - match self.alloc_safe(layout) { - None => core::ptr::null_mut(), - Some(p) => p.as_ptr(), - } - } - - unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {} -} From 90be23a192ee2bcfdf284a3c4b43c4206214ccdd Mon Sep 17 00:00:00 2001 From: Corwin Date: Tue, 13 Feb 2024 18:50:41 +0000 Subject: [PATCH 2/2] remove block counting to no longer attempt to detect memory leaks remove checking blocks Signed-off-by: Corwin --- agb/src/agb_alloc/block_allocator.rs | 20 -------------------- agb/src/agb_alloc/mod.rs | 5 ----- agb/src/lib.rs | 6 ------ 3 files changed, 31 deletions(-) diff --git a/agb/src/agb_alloc/block_allocator.rs b/agb/src/agb_alloc/block_allocator.rs index f9d1da00..c924cfc3 100644 --- a/agb/src/agb_alloc/block_allocator.rs +++ b/agb/src/agb_alloc/block_allocator.rs @@ -71,12 +71,6 @@ impl BlockAllocator { f(inner) } - #[doc(hidden)] - #[cfg(any(test, feature = "testing"))] - pub unsafe fn number_of_blocks(&self) -> u32 { - self.with_inner(|inner| inner.number_of_blocks()) - } - pub unsafe fn alloc(&self, layout: Layout) -> Option> { self.with_inner(|inner| inner.alloc(layout)) } @@ -105,20 +99,6 @@ impl BlockAllocatorInner { } } - #[doc(hidden)] - #[cfg(any(test, feature = "testing"))] - pub unsafe fn number_of_blocks(&mut self) -> u32 { - let mut count = 0; - - let mut list_ptr = &mut self.state.first_free_block; - while let Some(mut current) = list_ptr { - count += 1; - list_ptr = &mut current.as_mut().next; - } - - count - } - /// Requests a brand new block from the inner bump allocator fn new_block(&mut self, layout: Layout) -> Option> { let overall_layout = Block::either_layout(layout); diff --git a/agb/src/agb_alloc/mod.rs b/agb/src/agb_alloc/mod.rs index 617786b1..8110ebe9 100644 --- a/agb/src/agb_alloc/mod.rs +++ b/agb/src/agb_alloc/mod.rs @@ -119,11 +119,6 @@ static __IWRAM_ALLOC: BlockAllocator = unsafe { }) }; -#[cfg(any(test, feature = "testing"))] -pub(crate) unsafe fn number_of_blocks() -> u32 { - GLOBAL_ALLOC.number_of_blocks() -} - fn iwram_data_end() -> usize { extern "C" { static __iwram_end: u8; diff --git a/agb/src/lib.rs b/agb/src/lib.rs index c7483b93..b334a7fe 100644 --- a/agb/src/lib.rs +++ b/agb/src/lib.rs @@ -306,12 +306,6 @@ pub mod test_runner { self(gba); mgba::test_runner_measure_cycles(); - assert!( - unsafe { agb_alloc::number_of_blocks() } < 2, - "memory is being leaked, there are {} blocks", - unsafe { agb_alloc::number_of_blocks() } - ); - mgba.print(format_args!("[ok]"), mgba::DebugLevel::Info) .unwrap(); }