use crate::util::constants::*;
mod active_plan;
mod collection;
pub mod edge_shape;
mod object_model;
mod reference_glue;
mod scanning;
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::EdgeVisitor;
pub use self::scanning::ObjectTracer;
pub use self::scanning::RootsWorkFactory;
pub use self::scanning::Scanning;
const DEFAULT_LOG_MIN_ALIGNMENT: usize = LOG_BYTES_IN_INT as usize;
const DEFAULT_LOG_MAX_ALIGNMENT: usize = LOG_BYTES_IN_LONG as usize;
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 VMEdge: edge_shape::Edge;
type VMMemorySlice: edge_shape::MemorySlice<Edge = Self::VMEdge>;
const ALIGNMENT_VALUE: usize = 0xdead_beef;
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;
}