mmtk/plan/sticky/immix/
gc_work.rs1use crate::plan::generational::gc_work::GenNurseryTrace;
2use crate::plan::tracing::PlanTrace;
3use crate::policy::gc_work::TraceKind;
4use crate::policy::gc_work::DEFAULT_TRACE;
5use crate::policy::gc_work::TRACE_KIND_TRANSITIVE_PIN;
6use crate::vm::VMBinding;
7
8use super::global::StickyImmix;
9
10pub struct StickyImmixNurseryGCWorkContext<VM: VMBinding>(std::marker::PhantomData<VM>);
11
12impl<VM: VMBinding> crate::scheduler::GCWorkContext for StickyImmixNurseryGCWorkContext<VM> {
13 type VM = VM;
14 type PlanType = StickyImmix<VM>;
15 type DefaultTrace = GenNurseryTrace<VM, Self::PlanType, DEFAULT_TRACE>;
16 type PinningTrace = GenNurseryTrace<VM, Self::PlanType, TRACE_KIND_TRANSITIVE_PIN>;
17}
18
19pub struct StickyImmixMatureGCWorkContext<VM: VMBinding, const KIND: TraceKind>(
20 std::marker::PhantomData<VM>,
21);
22impl<VM: VMBinding, const KIND: TraceKind> crate::scheduler::GCWorkContext
23 for StickyImmixMatureGCWorkContext<VM, KIND>
24{
25 type VM = VM;
26 type PlanType = StickyImmix<VM>;
27 type DefaultTrace = PlanTrace<Self::PlanType, KIND>;
28 type PinningTrace = PlanTrace<Self::PlanType, TRACE_KIND_TRANSITIVE_PIN>;
29}