org.mmtk.plan.refcount
Class RCBaseCollector

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
All Implemented Interfaces:
Constants
Direct Known Subclasses:
GenRCCollector, RCCollector

public abstract class RCBaseCollector
extends StopTheWorldCollector

This class implements the collector context for a reference counting collector. See Shahriyar et al for details of and rationale for the optimizations used here (http://dx.doi.org/10.1145/2258996.2259008). See Chapter 4 of Daniel Frampton's PhD thesis for details of and rationale for the cycle collection strategy used by this collector.


Field Summary
private  BTTraceLocal backupTrace
           
private  RCDecBuffer decBuffer
           
private  ObjectReferenceDeque modBuffer
           
protected  ObjectReferenceDeque newRootBuffer
           
private  ObjectReferenceDeque oldRootBuffer
           
private  RCZero zero
           
 
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
RCBaseCollector()
          Constructor.
 
Method Summary
 void collect()
          Perform garbage collection
 void collectionPhase(short phaseId, boolean primary)
          Perform a (local, i.e.per-collector) collection phase.
 TraceLocal getCurrentTrace()
           
 ObjectReferenceDeque getModBuffer()
           
protected abstract  TransitiveClosure getModifiedProcessor()
          Get the modified processor to use.
protected abstract  TraceLocal getRootTrace()
          Get the root trace to use.
protected static RCBase 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
allocCopy, copyCheckAllocator, getId, getLog, initCollector, postCopy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

newRootBuffer

protected final ObjectReferenceDeque newRootBuffer

backupTrace

private final BTTraceLocal backupTrace

modBuffer

private final ObjectReferenceDeque modBuffer

oldRootBuffer

private final ObjectReferenceDeque oldRootBuffer

decBuffer

private final RCDecBuffer decBuffer

zero

private final RCZero zero
Constructor Detail

RCBaseCollector

public RCBaseCollector()
Constructor.

Method Detail

getModifiedProcessor

protected abstract TransitiveClosure getModifiedProcessor()
Get the modified processor to use.


getRootTrace

protected abstract TraceLocal getRootTrace()
Get the root trace to use.


collect

public void collect()
Perform garbage collection

Overrides:
collect in class StopTheWorldCollector

collectionPhase

public void collectionPhase(short phaseId,
                            boolean primary)
Description copied from class: SimpleCollector
Perform a (local, i.e.per-collector) collection phase.

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

global

protected static RCBase global()
Returns:
The active global plan as an RC instance.

getCurrentTrace

public final TraceLocal getCurrentTrace()
Overrides:
getCurrentTrace in class ParallelCollector
Returns:
The current trace instance.

getModBuffer

public final ObjectReferenceDeque getModBuffer()
Returns:
The current modBuffer instance.