use crate::util::heap::layout::vm_layout_constants::LOG_ADDRESS_SPACE;
#[cfg(target_pointer_width = "32")]
use crate::util::heap::layout::vm_layout_constants::{BYTES_IN_CHUNK, LOG_BYTES_IN_CHUNK};
use crate::util::Address;
#[cfg(target_pointer_width = "32")]
pub const GLOBAL_SIDE_METADATA_BASE_ADDRESS: Address = unsafe { Address::from_usize(0) };
#[cfg(target_pointer_width = "64")]
pub const GLOBAL_SIDE_METADATA_BASE_ADDRESS: Address =
unsafe { Address::from_usize(0x0000_0600_0000_0000usize) };
#[cfg(target_pointer_width = "32")]
pub(crate) const LOG_GLOBAL_SIDE_METADATA_WORST_CASE_RATIO: usize = 3;
#[cfg(target_pointer_width = "64")]
pub(crate) const LOG_GLOBAL_SIDE_METADATA_WORST_CASE_RATIO: usize = 1;
#[cfg(target_pointer_width = "32")]
pub const LOG_LOCAL_SIDE_METADATA_WORST_CASE_RATIO: usize = 3;
pub(crate) const LOG_MAX_GLOBAL_SIDE_METADATA_SIZE: usize =
LOG_ADDRESS_SPACE - LOG_GLOBAL_SIDE_METADATA_WORST_CASE_RATIO;
pub const LOCAL_SIDE_METADATA_BASE_ADDRESS: Address = unsafe {
Address::from_usize(
GLOBAL_SIDE_METADATA_BASE_ADDRESS.as_usize()
+ (1usize << LOG_MAX_GLOBAL_SIDE_METADATA_SIZE),
)
};
#[cfg(target_pointer_width = "32")]
pub const CHUNK_MASK: usize = (1 << LOG_BYTES_IN_CHUNK) - 1;
#[cfg(target_pointer_width = "32")]
pub const LOCAL_SIDE_METADATA_PER_CHUNK: usize =
BYTES_IN_CHUNK >> LOG_LOCAL_SIDE_METADATA_WORST_CASE_RATIO;