pub const MIN_SUPPORTED_PAGE_SIZE: usize = 4096;
pub const MAX_SUPPORTED_PAGE_SIZE: usize = 16384;
pub const MIN_OBJECT_SIZE: usize = 16;
pub const MAX_SMALL_ALLOCATION: usize = 16_384;
pub const NUM_SIZE_CLASSES: usize = 25;
pub const OCCUPANCY_CUTOFF_NUMERATOR: u32 = 4;
pub const OCCUPANCY_CUTOFF_DENOMINATOR: u32 = 5;
pub const MIN_SHUFFLE_VECTOR_LENGTH: usize = 8;
pub const MAX_ATTACHED_MINIHEAPS_PER_CLASS: usize = 48;
pub const MAX_OBJECT_SLOTS_PER_SPAN: usize = MAX_SUPPORTED_PAGE_SIZE / MIN_OBJECT_SIZE;
pub const MAX_SHUFFLE_VECTOR_LENGTH: usize = MAX_OBJECT_SLOTS_PER_SPAN;
pub const DEFAULT_ARENA_SIZE: usize = 64 * 1024 * 1024 * 1024;
pub const MINIHEAP_REFILL_GOAL_SIZE: usize = 16 * 1024;

#[inline(always)]
pub const fn is_below_partial_threshold(in_use: u32, max_count: u32) -> bool {
    in_use.saturating_mul(OCCUPANCY_CUTOFF_DENOMINATOR)
        < max_count.saturating_mul(OCCUPANCY_CUTOFF_NUMERATOR)
}
