Skip to content

Commit ff0e8a4

Browse files
committed
perf: gate get_alloc_size call behind AMO feature flag
When AMO is disabled, the get_alloc_size call at the end of dealloc is dead code. Gating it behind #[cfg(feature = "amo")] eliminates unnecessary pointer reads on the dealloc hot path.
1 parent b78de07 commit ff0e8a4

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

aethalloc-abi/src/global.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ unsafe fn amo_push_free_block(ptr: *mut u8, size: usize, size_class: u8) {
7171
/// No-op when AMO is disabled
7272
#[cfg(not(feature = "amo"))]
7373
#[inline]
74+
#[allow(dead_code)]
7475
unsafe fn amo_push_free_block(_ptr: *mut u8, _size: usize, _size_class: u8) {}
7576

7677
/// Push a batch of free blocks to the AMO ring buffer
@@ -699,9 +700,12 @@ unsafe impl GlobalAlloc for AethAlloc {
699700
let cache = get_thread_cache();
700701
cache.metrics.record_free();
701702
cache.metrics.maybe_flush();
702-
let alloc_size = get_alloc_size(ptr);
703-
let size_class = size_to_class(round_up_pow2(alloc_size).max(16)).unwrap_or(0) as u8;
704-
amo_push_free_block(ptr, alloc_size, size_class);
703+
#[cfg(feature = "amo")]
704+
{
705+
let alloc_size = get_alloc_size(ptr);
706+
let size_class = size_to_class(round_up_pow2(alloc_size).max(16)).unwrap_or(0) as u8;
707+
amo_push_free_block(ptr, alloc_size, size_class);
708+
}
705709
}
706710
}
707711

@@ -882,9 +886,12 @@ unsafe impl GlobalAlloc for AethAlloc {
882886
let cache = get_thread_cache();
883887
cache.metrics.record_free();
884888
cache.metrics.maybe_flush();
885-
let alloc_size = get_alloc_size(ptr);
886-
let size_class = size_to_class(round_up_pow2(alloc_size).max(16)).unwrap_or(0) as u8;
887-
amo_push_free_block(ptr, alloc_size, size_class);
889+
#[cfg(feature = "amo")]
890+
{
891+
let alloc_size = get_alloc_size(ptr);
892+
let size_class = size_to_class(round_up_pow2(alloc_size).max(16)).unwrap_or(0) as u8;
893+
amo_push_free_block(ptr, alloc_size, size_class);
894+
}
888895
}
889896
}
890897

0 commit comments

Comments
 (0)