org.mmtk.plan.semispace
Class SSTraceLocal

java.lang.Object
  extended by org.mmtk.plan.TransitiveClosure
      extended by org.mmtk.plan.TraceLocal
          extended by org.mmtk.plan.semispace.SSTraceLocal
All Implemented Interfaces:
Constants
Direct Known Subclasses:
GCTraceTraceLocal, SSGCspyTraceLocal

public class SSTraceLocal
extends TraceLocal

This class implments the core functionality for a transitive closure over the heap graph.


Field Summary
 
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
SSTraceLocal(Trace trace)
          Constructor
SSTraceLocal(Trace trace, boolean specialized)
          Constructor
 
Method Summary
 boolean isLive(ObjectReference object)
          Return true if obj is a live object.
 ObjectReference precopyObject(ObjectReference object)
          Ensure that this object will not move for the rest of the GC.
 ObjectReference traceObject(ObjectReference object)
          This method is the core method during the trace of the object graph.
 boolean willNotMoveInCurrentCollection(ObjectReference object)
          Will this object move from this point on, during the current trace ?
 
Methods inherited from class org.mmtk.plan.TraceLocal
completeTrace, flush, getForwardedFinalizable, getForwardedReference, getForwardedReferenceType, getForwardedReferent, incrementalTrace, isReachable, isReferentLive, logMessage, prepare, processEdge, processInteriorEdge, processNode, processPrecopyEdge, processRememberedSets, processRootEdge, processRoots, readyToFinalize, release, reportDelayedRootEdge, retainForFinalize, retainReferent, scanObject, traceObject
 
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
 

Constructor Detail

SSTraceLocal

public SSTraceLocal(Trace trace,
                    boolean specialized)
Constructor


SSTraceLocal

public SSTraceLocal(Trace trace)
Constructor

Method Detail

isLive

public boolean isLive(ObjectReference object)
Return true if obj is a live object.

Overrides:
isLive in class TraceLocal
Parameters:
object - The object in question
Returns:
True if obj is a live object.

traceObject

public ObjectReference traceObject(ObjectReference object)
This method is the core method during the trace of the object graph. The role of this method is to: 1. Ensure the traced object is not collected. 2. If this is the first visit to the object enqueue it to be scanned. 3. Return the forwarded reference to the object.

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

precopyObject

public ObjectReference precopyObject(ObjectReference object)
Ensure that this object will not move for the rest of the GC.

Overrides:
precopyObject in class TraceLocal
Parameters:
object - The object that must not move
Returns:
The new object, guaranteed stable for the rest of the GC.

willNotMoveInCurrentCollection

public boolean willNotMoveInCurrentCollection(ObjectReference object)
Will this object move from this point on, during the current trace ?

Overrides:
willNotMoveInCurrentCollection in class TraceLocal
Parameters:
object - The object to query.
Returns:
True if the object will not move.