org.mmtk.plan.generational
Class GenMatureTraceLocal

java.lang.Object
  extended by org.mmtk.plan.TransitiveClosure
      extended by org.mmtk.plan.TraceLocal
          extended by org.mmtk.plan.generational.GenMatureTraceLocal
All Implemented Interfaces:
Constants
Direct Known Subclasses:
GenCopyMatureTraceLocal, GenImmixMatureDefragTraceLocal, GenImmixMatureTraceLocal, GenMSMatureTraceLocal

public abstract class GenMatureTraceLocal
extends TraceLocal

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


Field Summary
private  AddressPairDeque arrayRemset
           
private  ObjectReferenceDeque modbuf
           
private  AddressDeque remset
           
 
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
GenMatureTraceLocal(int specializedScan, Trace trace, GenCollector plan)
          Constructor
GenMatureTraceLocal(Trace trace, GenCollector plan)
          Constructor
 
Method Summary
 boolean isLive(ObjectReference object)
          Is the specified object live?
protected  void processRememberedSets()
          Process any remembered set entries.
 ObjectReference traceObject(ObjectReference object)
          This method is the core method during the trace of the object graph.
 boolean willNotMoveInCurrentCollection(ObjectReference object)
          Return true if this object is guaranteed not to move during this collection (i.e. this object is definitely not an unforwarded object).
 
Methods inherited from class org.mmtk.plan.TraceLocal
completeTrace, flush, getForwardedFinalizable, getForwardedReference, getForwardedReferenceType, getForwardedReferent, incrementalTrace, isReachable, isReferentLive, logMessage, overwriteReferenceDuringTrace, prepare, processEdge, processInteriorEdge, processNode, 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
 

Field Detail

modbuf

private final ObjectReferenceDeque modbuf

remset

private final AddressDeque remset

arrayRemset

private final AddressPairDeque arrayRemset
Constructor Detail

GenMatureTraceLocal

public GenMatureTraceLocal(int specializedScan,
                           Trace trace,
                           GenCollector plan)
Constructor


GenMatureTraceLocal

public GenMatureTraceLocal(Trace trace,
                           GenCollector plan)
Constructor

Method Detail

isLive

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

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

willNotMoveInCurrentCollection

public boolean willNotMoveInCurrentCollection(ObjectReference object)
Return true if this object is guaranteed not to move during this collection (i.e. this object is definitely not an unforwarded object).

Overrides:
willNotMoveInCurrentCollection in class TraceLocal
Parameters:
object -
Returns:
true if this object is guaranteed not to move during this collection.

traceObject

public ObjectReference traceObject(ObjectReference object)
Description copied from class: TraceLocal
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.

processRememberedSets

protected void processRememberedSets()
Process any remembered set entries.

Overrides:
processRememberedSets in class TraceLocal