org.mmtk.plan.refcount.generational
Class GenRCCollector

java.lang.Object
  extended by org.mmtk.plan.CollectorContext
      extended by org.mmtk.plan.ParallelCollector
          extended by org.mmtk.plan.SimpleCollector
              extended by org.mmtk.plan.StopTheWorldCollector
                  extended by org.mmtk.plan.refcount.RCBaseCollector
                      extended by org.mmtk.plan.refcount.generational.GenRCCollector
All Implemented Interfaces:
Constants

public class GenRCCollector
extends RCBaseCollector

This class implements the collector context for a simple reference counting collector.


Field Summary
private  GenRCModifiedProcessor modProcessor
           
private  ExplicitFreeListLocal rc
           
private  GenRCFindRootSetTraceLocal rootTrace
           
 
Fields inherited from class org.mmtk.plan.refcount.RCBaseCollector
newRootBuffer
 
Fields inherited from class org.mmtk.plan.SimpleCollector
sanityLocal
 
Fields inherited from class org.mmtk.plan.ParallelCollector
group
 
Fields inherited from class org.mmtk.plan.CollectorContext
log
 
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
GenRCCollector()
           
 
Method Summary
 Address allocCopy(ObjectReference original, int bytes, int align, int offset, int allocator)
          Allocate space for copying an object (this method does not copy the object, it only allocates space)
 void collectionPhase(short phaseId, boolean primary)
          Perform a (local, i.e.per-collector) collection phase.
protected  TransitiveClosure getModifiedProcessor()
          Get the modified processor to use.
protected  TraceLocal getRootTrace()
          Get the root trace to use.
 void postCopy(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
          Perform any post-copy actions.
 
Methods inherited from class org.mmtk.plan.refcount.RCBaseCollector
collect, getCurrentTrace, getModBuffer, global
 
Methods inherited from class org.mmtk.plan.StopTheWorldCollector
concurrentCollect, concurrentCollectionPhase
 
Methods inherited from class org.mmtk.plan.ParallelCollector
parallelWorkerCount, parallelWorkerOrdinal, park, rendezvous, run
 
Methods inherited from class org.mmtk.plan.CollectorContext
copyCheckAllocator, getId, getLog, initCollector
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rootTrace

private final GenRCFindRootSetTraceLocal rootTrace

modProcessor

private final GenRCModifiedProcessor modProcessor

rc

private final ExplicitFreeListLocal rc
Constructor Detail

GenRCCollector

public GenRCCollector()
Method Detail

collectionPhase

public final void collectionPhase(short phaseId,
                                  boolean primary)
Perform a (local, i.e.per-collector) collection phase.

Overrides:
collectionPhase in class RCBaseCollector
Parameters:
phaseId - The unique phase identifier
primary - Should this thread be used to execute any single-threaded local operations?

allocCopy

public final Address allocCopy(ObjectReference original,
                               int bytes,
                               int align,
                               int offset,
                               int allocator)
Allocate space for copying an object (this method does not copy the object, it only allocates space)

Overrides:
allocCopy in class CollectorContext
Parameters:
original - The object that is being copied.
bytes - The size of the space to be allocated (in bytes)
align - Required alignment for the copy
offset - Offset associated with the alignment.
allocator - The allocator associated with this request
Returns:
The address of the first byte of the allocated region

postCopy

public final void postCopy(ObjectReference object,
                           ObjectReference typeRef,
                           int bytes,
                           int allocator)
Perform any post-copy actions.

In this case nothing is required.

Overrides:
postCopy in class CollectorContext
Parameters:
object - The newly allocated object.
typeRef - the type reference for the instance being created.
bytes - The size of the space to be allocated (in bytes).
allocator - The allocator statically assigned to this allocation.

getModifiedProcessor

protected final TransitiveClosure getModifiedProcessor()
Description copied from class: RCBaseCollector
Get the modified processor to use.

Specified by:
getModifiedProcessor in class RCBaseCollector

getRootTrace

protected final TraceLocal getRootTrace()
Description copied from class: RCBaseCollector
Get the root trace to use.

Specified by:
getRootTrace in class RCBaseCollector