pub(crate) type TraceKind = u8;
pub const DEFAULT_TRACE: u8 = u8::MAX;
use crate::plan::ObjectQueue;
use crate::scheduler::GCWorker;
use crate::util::copy::CopySemantics;
use crate::util::ObjectReference;
use crate::vm::VMBinding;
pub trait PolicyTraceObject<VM: VMBinding> {
fn trace_object<Q: ObjectQueue, const KIND: TraceKind>(
&self,
queue: &mut Q,
object: ObjectReference,
copy: Option<CopySemantics>,
worker: &mut GCWorker<VM>,
) -> ObjectReference;
#[inline(always)]
fn post_scan_object(&self, _object: ObjectReference) {
}
fn may_move_objects<const KIND: TraceKind>() -> bool;
}