mmtk/plan/concurrent/immix/
gc_work.rs1use crate::plan::concurrent::immix::global::ConcurrentImmix;
2use crate::policy::gc_work::{TraceKind, TRACE_KIND_TRANSITIVE_PIN};
3use crate::scheduler::gc_work::{PlanProcessEdges, UnsupportedProcessEdges};
4use crate::scheduler::ProcessEdgesWork;
5use crate::vm::VMBinding;
6
7pub(super) struct ConcurrentImmixSTWGCWorkContext<VM: VMBinding, const KIND: TraceKind>(
8 std::marker::PhantomData<VM>,
9);
10impl<VM: VMBinding, const KIND: TraceKind> crate::scheduler::GCWorkContext
11 for ConcurrentImmixSTWGCWorkContext<VM, KIND>
12{
13 type VM = VM;
14 type PlanType = ConcurrentImmix<VM>;
15 type DefaultProcessEdges = PlanProcessEdges<VM, ConcurrentImmix<VM>, KIND>;
16 type PinningProcessEdges = PlanProcessEdges<VM, ConcurrentImmix<VM>, TRACE_KIND_TRANSITIVE_PIN>;
17}
18pub(super) struct ConcurrentImmixGCWorkContext<E: ProcessEdgesWork>(std::marker::PhantomData<E>);
19
20impl<E: ProcessEdgesWork> crate::scheduler::GCWorkContext for ConcurrentImmixGCWorkContext<E> {
21 type VM = E::VM;
22 type PlanType = ConcurrentImmix<E::VM>;
23 type DefaultProcessEdges = E;
24 type PinningProcessEdges = UnsupportedProcessEdges<Self::VM>;
25}