org.mmtk.plan.refcount.generational
Class GenRCFindRootSetTraceLocal

java.lang.Object
  extended by org.mmtk.plan.TransitiveClosure
      extended by org.mmtk.plan.TraceLocal
          extended by org.mmtk.plan.refcount.generational.GenRCFindRootSetTraceLocal
All Implemented Interfaces:
Constants

public final class GenRCFindRootSetTraceLocal
extends TraceLocal

This class implements the thread-local core functionality for a transitive closure over the heap graph.


Field Summary
private  ObjectReferenceDeque rootBuffer
           
 
Fields inherited from class org.mmtk.plan.TraceLocal
rootLocations, values
 
Fields inherited from class org.mmtk.plan.TransitiveClosure
specializedScan
 
Fields inherited from interface org.mmtk.utility.Constants
ALIGNMENT_VALUE, ARRAY_ELEMENT, BITS_IN_ADDRESS, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_INT, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_INT, BYTES_IN_KBYTE, BYTES_IN_MBYTE, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, CARD_MASK, CARD_META_PAGES_PER_REGION, INSTANCE_FIELD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_INT, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_ADDRESS_SPACE, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_INT, LOG_BYTES_IN_KBYTE, LOG_BYTES_IN_MBYTE, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD, LOG_CARD_BYTES, LOG_CARD_GRAIN, LOG_CARD_META_BYTES, LOG_CARD_META_PAGES, LOG_CARD_META_SIZE, LOG_CARD_UNITS, LOG_MIN_ALIGNMENT, MAX_ALIGNMENT, MAX_BYTES_PADDING, MAX_INT, MIN_ALIGNMENT, MIN_INT, SUPPORT_CARD_SCANNING
 
Constructor Summary
GenRCFindRootSetTraceLocal(Trace trace, ObjectReferenceDeque rootBuffer)
          Constructor
 
Method Summary
 boolean isLive(ObjectReference object)
          Is the specified object reachable?
 ObjectReference traceObject(ObjectReference object)
          When we trace a non-root object we do nothing.
 ObjectReference traceObject(ObjectReference object, boolean root)
          When we trace a root object we remember it.
 boolean willNotMoveInCurrentCollection(ObjectReference object)
          Ensure that the referenced object will not move from this point through to the end of the collection.
 
Methods inherited from class org.mmtk.plan.TraceLocal
completeTrace, flush, getForwardedFinalizable, getForwardedReference, getForwardedReferenceType, getForwardedReferent, incrementalTrace, isReachable, isReferentLive, logMessage, overwriteReferenceDuringTrace, prepare, processEdge, processInteriorEdge, processNode, processRememberedSets, processRootEdge, processRoots, readyToFinalize, release, reportDelayedRootEdge, retainForFinalize, retainReferent, scanObject
 
Methods inherited from class org.mmtk.plan.TransitiveClosure
getSpecializedScanClass, registerSpecializedScan
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rootBuffer

private final ObjectReferenceDeque rootBuffer
Constructor Detail

GenRCFindRootSetTraceLocal

public GenRCFindRootSetTraceLocal(Trace trace,
                                  ObjectReferenceDeque rootBuffer)
Constructor

Method Detail

isLive

public boolean isLive(ObjectReference object)
Is the specified object reachable?

Overrides:
isLive in class TraceLocal
Parameters:
object - The object.
Returns:
true if the object is reachable.

traceObject

public ObjectReference traceObject(ObjectReference object)
When we trace a non-root object we do nothing.

Overrides:
traceObject in class TraceLocal
Parameters:
object - The object to be traced.
Returns:
The new reference to the same object instance.

traceObject

public ObjectReference traceObject(ObjectReference object,
                                   boolean root)
When we trace a root object we remember it.

Overrides:
traceObject in class TraceLocal
Parameters:
object - The object to be traced.
root - Is this object a root?
Returns:
The new reference to the same object instance.

willNotMoveInCurrentCollection

public boolean willNotMoveInCurrentCollection(ObjectReference object)
Description copied from class: TraceLocal
Ensure that the referenced object will not move from this point through to the end of the collection. This can involve forwarding the object if necessary. Non-copying collectors do nothing, copying collectors must override this method in each of their trace classes.

Overrides:
willNotMoveInCurrentCollection in class TraceLocal
Parameters:
object - The object that must not move during the collection.
Returns:
true If the object will not move during collection