Trait mmtk::vm::Scanning[][src]

pub trait Scanning<VM: VMBinding> {
    const SCAN_MUTATORS_IN_SAFEPOINT: bool;
    const SINGLE_THREAD_MUTATOR_SCANNING: bool;

    fn scan_object<T: TransitiveClosure>(
        trace: &mut T,
        object: ObjectReference,
        tls: OpaquePointer
    );
fn notify_initial_thread_scan_complete(
        partial_scan: bool,
        tls: OpaquePointer
    );
fn scan_objects<W: ProcessEdgesWork<VM = VM>>(
        objects: &[ObjectReference],
        worker: &mut GCWorker<VM>
    );
fn scan_thread_roots<W: ProcessEdgesWork<VM = VM>>();
fn scan_thread_root<W: ProcessEdgesWork<VM = VM>>(
        mutator: &'static mut Mutator<VM>,
        tls: OpaquePointer
    );
fn scan_vm_specific_roots<W: ProcessEdgesWork<VM = VM>>();
fn supports_return_barrier() -> bool; }

VM-specific methods for scanning roots/objects.

Associated Constants

const SCAN_MUTATORS_IN_SAFEPOINT: bool[src]

Scan stack roots after all mutators are paused.

const SINGLE_THREAD_MUTATOR_SCANNING: bool[src]

Scan all the mutators within a single work packet.

SCAN_MUTATORS_IN_SAFEPOINT should also be enabled

Loading content...

Required methods

fn scan_object<T: TransitiveClosure>(
    trace: &mut T,
    object: ObjectReference,
    tls: OpaquePointer
)
[src]

Delegated scanning of a object, processing each pointer field encountered. This method probably will be removed in the future, in favor of bulk scanning scan_objects.

Arguments:

  • trace: The TransitiveClosure to use for scanning.
  • object: The object to be scanned.
  • tls: The GC worker thread that is doing this tracing.

fn notify_initial_thread_scan_complete(partial_scan: bool, tls: OpaquePointer)[src]

MMTk calls this method at the first time during a collection that thread’s stacks have been scanned. This can be used (for example) to clean up obsolete compiled methods that are no longer being executed.

Arguments:

  • partial_scan: Whether the scan was partial or full-heap.
  • tls: The GC thread that is performing the thread scan.

fn scan_objects<W: ProcessEdgesWork<VM = VM>>(
    objects: &[ObjectReference],
    worker: &mut GCWorker<VM>
)
[src]

Bulk scanning of objects, processing each pointer field for each object.

Arguments:

  • objects: The slice of object references to be scanned.

fn scan_thread_roots<W: ProcessEdgesWork<VM = VM>>()[src]

Scan all the mutators for roots.

fn scan_thread_root<W: ProcessEdgesWork<VM = VM>>(
    mutator: &'static mut Mutator<VM>,
    tls: OpaquePointer
)
[src]

Scan one mutator for roots.

Arguments:

  • mutator: The reference to the mutator whose roots will be scanned.
  • tls: The GC thread that is performing this scanning.

fn scan_vm_specific_roots<W: ProcessEdgesWork<VM = VM>>()[src]

Scan VM-specific roots. The creation of all root scan tasks (except thread scanning) goes here.

fn supports_return_barrier() -> bool[src]

Return whether the VM supports return barriers. This is unused at the moment.

Loading content...

Implementors

Loading content...