mmtk/plan/sticky/immix/
gc_work.rs

1use crate::policy::gc_work::TraceKind;
2use crate::policy::gc_work::DEFAULT_TRACE;
3use crate::policy::gc_work::TRACE_KIND_TRANSITIVE_PIN;
4use crate::scheduler::gc_work::PlanProcessEdges;
5use crate::{plan::generational::gc_work::GenNurseryProcessEdges, vm::VMBinding};
6
7use super::global::StickyImmix;
8
9pub struct StickyImmixNurseryGCWorkContext<VM: VMBinding>(std::marker::PhantomData<VM>);
10
11impl<VM: VMBinding> crate::scheduler::GCWorkContext for StickyImmixNurseryGCWorkContext<VM> {
12    type VM = VM;
13    type PlanType = StickyImmix<VM>;
14    type DefaultProcessEdges = GenNurseryProcessEdges<VM, Self::PlanType, DEFAULT_TRACE>;
15    type PinningProcessEdges =
16        GenNurseryProcessEdges<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 DefaultProcessEdges = PlanProcessEdges<VM, Self::PlanType, KIND>;
28    type PinningProcessEdges = PlanProcessEdges<VM, Self::PlanType, TRACE_KIND_TRANSITIVE_PIN>;
29}