pub(crate) struct ConcurrentMarkingRootsWorkFactory<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> {
pub(crate) mmtk: &'static MMTK<VM>,
phantom_data: PhantomData<P>,
}Expand description
A custom implementation of RootsWorkFactory for concurrent marking.
Slot roots are loaded immediately and represented as root nodes, just like pinning roots. All
roots are handled by the ConcurrentTraceObjects work packets.
Fields§
§mmtk: &'static MMTK<VM>§phantom_data: PhantomData<P>Implementations§
Source§impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
pub(crate) fn new(mmtk: &'static MMTK<VM>) -> Self
fn debug_assert_initial_mark(&self)
fn create_and_schedule_root_nodes_work(&mut self, nodes: Vec<ObjectReference>)
Trait Implementations§
Source§impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> Clone for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> Clone for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
Source§impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> RootsWorkFactory<<VM as VMBinding>::VMSlot> for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> RootsWorkFactory<<VM as VMBinding>::VMSlot> for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
Source§fn create_process_roots_work(&mut self, slots: Vec<VM::VMSlot>)
fn create_process_roots_work(&mut self, slots: Vec<VM::VMSlot>)
Create work packets to handle non-pinned roots. The roots are represented as slots so that
they can be updated. Read more
Source§fn create_process_pinning_roots_work(&mut self, nodes: Vec<ObjectReference>)
fn create_process_pinning_roots_work(&mut self, nodes: Vec<ObjectReference>)
Create work packets to handle non-transitively pinning roots. Read more
Source§fn create_process_tpinning_roots_work(&mut self, nodes: Vec<ObjectReference>)
fn create_process_tpinning_roots_work(&mut self, nodes: Vec<ObjectReference>)
Create work packets to handle transitively pinning (TP) roots. Read more
impl<VM: VMBinding, P: ConcurrentPlan<VM = VM> + PlanTraceObject<VM>, const KIND: u8> Send for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
Auto Trait Implementations§
impl<VM, P, const KIND: u8> Freeze for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM, P, const KIND: u8> !RefUnwindSafe for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM, P, const KIND: u8> Sync for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
impl<VM, P, const KIND: u8> Unpin for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>where
P: Unpin,
impl<VM, P, const KIND: u8> !UnwindSafe for ConcurrentMarkingRootsWorkFactory<VM, P, KIND>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more