pub mod block;
pub mod defrag;
pub mod immixspace;
pub mod line;
pub use immixspace::*;
use crate::policy::immix::block::Block;
use crate::util::linear_scan::Region;
pub const MAX_IMMIX_OBJECT_SIZE: usize = Block::BYTES >> 1;
pub const BLOCK_ONLY: bool = false;
pub const DEFRAG: bool = !cfg!(feature = "immix_no_defrag");
pub const MARK_LINE_AT_SCAN_TIME: bool = true;
macro_rules! validate {
($x: expr) => { assert!($x, stringify!($x)) };
($x: expr => $y: expr) => { if $x { assert!($y, stringify!($x implies $y)) } };
}
fn validate_features() {
validate!(DEFRAG => !BLOCK_ONLY);
assert!(Block::LINES / 2 <= u8::MAX as usize - 2);
}