ScanObjectsWork

Trait ScanObjectsWork 

Source
pub trait ScanObjectsWork<VM: VMBinding>: GCWork<VM> + Sized {
    type E: ProcessEdgesWork<VM = VM>;

    // Required methods
    fn post_scan_object(&self, object: ObjectReference);
    fn get_bucket(&self) -> WorkBucketStage;

    // Provided method
    fn do_work_common(
        &self,
        buffer: &[ObjectReference],
        worker: &mut GCWorker<<Self::E as ProcessEdgesWork>::VM>,
        mmtk: &'static MMTK<<Self::E as ProcessEdgesWork>::VM>,
    ) { ... }
}
Expand description

Trait for a work packet that scans objects

Required Associated Types§

Source

type E: ProcessEdgesWork<VM = VM>

The associated ProcessEdgesWork for processing the outgoing edges of the objects in this packet.

Required Methods§

Source

fn post_scan_object(&self, object: ObjectReference)

Called after each object is scanned.

Source

fn get_bucket(&self) -> WorkBucketStage

Return the work bucket for this work packet and its derived work packets.

Provided Methods§

Source

fn do_work_common( &self, buffer: &[ObjectReference], worker: &mut GCWorker<<Self::E as ProcessEdgesWork>::VM>, mmtk: &'static MMTK<<Self::E as ProcessEdgesWork>::VM>, )

The common code for ScanObjects and PlanScanObjects.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§