mod active_plan;
mod collection;
pub(crate) mod object_model;
mod reference_glue;
mod scanning;
pub mod slot;
pub use self::active_plan::ActivePlan;
pub use self::collection::Collection;
pub use self::collection::GCThreadContext;
pub use self::object_model::specs::*;
pub use self::object_model::ObjectModel;
pub use self::reference_glue::Finalizable;
pub use self::reference_glue::ReferenceGlue;
pub use self::scanning::ObjectTracer;
pub use self::scanning::ObjectTracerContext;
pub use self::scanning::RootsWorkFactory;
pub use self::scanning::Scanning;
pub use self::scanning::SlotVisitor;
#[cfg(test)]
mod tests;
const DEFAULT_LOG_MIN_ALIGNMENT: usize = 2;
const DEFAULT_LOG_MAX_ALIGNMENT: usize = 3;
pub trait VMBinding
where
Self: Sized + 'static + Send + Sync + Default,
{
type VMObjectModel: ObjectModel<Self>;
type VMScanning: Scanning<Self>;
type VMCollection: Collection<Self>;
type VMActivePlan: ActivePlan<Self>;
type VMReferenceGlue: ReferenceGlue<Self>;
type VMSlot: slot::Slot;
type VMMemorySlice: slot::MemorySlice<SlotType = Self::VMSlot>;
const ALIGNMENT_VALUE: u8 = 0xab;
const MIN_ALIGNMENT: usize = 1 << DEFAULT_LOG_MIN_ALIGNMENT;
const MAX_ALIGNMENT: usize = 1 << DEFAULT_LOG_MAX_ALIGNMENT;
const USE_ALLOCATION_OFFSET: bool = true;
const ALLOC_END_ALIGNMENT: usize = 1;
}