mmtk/plan/concurrent/immix/
gc_work.rs

1use 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}