Constructor and Description |
---|
Scanning() |
Modifier and Type | Method and Description |
---|---|
abstract void |
computeBootImageRoots(TraceLocal trace)
Compute all roots out of the VM's boot image (if any).
|
abstract void |
computeGlobalRoots(TraceLocal trace)
Computes global roots.
|
abstract void |
computeNewThreadRoots(TraceLocal trace)
Computes new roots pointed to by threads, their associated registers
and stacks.
|
abstract void |
computeStaticRoots(TraceLocal trace)
Computes static roots.
|
abstract void |
computeThreadRoots(TraceLocal trace)
Computes roots pointed to by threads, their associated registers
and stacks.
|
abstract void |
notifyInitialThreadScanComplete(boolean partialScan)
Called the first time during a collection that thread's stacks
have been scanned.
|
abstract void |
resetThreadCounter()
Prepares for using the
computeAllRoots method. |
abstract void |
scanObject(TransitiveClosure trace,
ObjectReference object)
Delegated scanning of a object, processing each pointer field
encountered.
|
abstract void |
specializedScanObject(int id,
TransitiveClosure trace,
ObjectReference object)
Invoke a specialized scan method.
|
abstract boolean |
supportsReturnBarrier() |
public Scanning()
public abstract void scanObject(TransitiveClosure trace, ObjectReference object)
trace
- the trace to use for scanningobject
- The object to be scanned.public abstract void specializedScanObject(int id, TransitiveClosure trace, ObjectReference object)
id
- The specialized method idtrace
- The trace the method has been specialized forobject
- The object to be scannedpublic abstract void resetThreadCounter()
computeAllRoots
method. The
thread counter allows multiple GC threads to co-operatively
iterate through the thread data structure (if load balancing
parallel GC threads were not important, the thread counter could
simply be replaced by a for loop).public abstract void notifyInitialThreadScanComplete(boolean partialScan)
partialScan
- whether the scan was partial or full-heappublic abstract void computeStaticRoots(TraceLocal trace)
threadCounter
must be reset so that load
balancing parallel GC can share the work of scanning threads.
trace
- The trace to use for computing roots.public abstract void computeGlobalRoots(TraceLocal trace)
threadCounter
must be reset so that load
balancing parallel GC can share the work of scanning threads.
trace
- The trace to use for computing roots.public abstract void computeThreadRoots(TraceLocal trace)
This method places these roots in the root values, root locations and interior root locations queues. This method should not have side effects (such as copying or forwarding of objects). There are a number of important preconditions:
threadCounter
must be reset so that load
balancing parallel GC can share the work of scanning threads.
trace
- The trace to use for computing roots.public abstract void computeNewThreadRoots(TraceLocal trace)
This method places these roots in the root values, root locations and interior root locations queues. This method should not have side effects (such as copying or forwarding of objects). There are a number of important preconditions:
threadCounter
must be reset so that load
balancing parallel GC can share the work of scanning threads.
trace
- The trace to use for computing roots.public abstract void computeBootImageRoots(TraceLocal trace)
trace
- The trace object to use to report root locations.public abstract boolean supportsReturnBarrier()