org.mmtk.plan.generational
Class GenCollector

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.generational.GenCollector
All Implemented Interfaces:
Constants
Direct Known Subclasses:
GenCopyCollector, GenImmixCollector, GenMSCollector

public abstract class GenCollector
extends StopTheWorldCollector

This abstract class implements per-collector thread behavior and state for generational copying collectors.

Specifically, this class defines nursery collection behavior (through nurseryTrace and the collectionPhase method). Per-collector thread remset consumers are instantiated here (used by sub-classes).

See Also:
Gen, GenMutator, StopTheWorldCollector, CollectorContext

Field Summary
protected  AddressPairDeque arrayRemset
           
protected  LargeObjectLocal los
           
protected  ObjectReferenceDeque modbuf
           
protected  GenNurseryTraceLocal nurseryTrace
           
protected  AddressDeque remset
           
 
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
GenCollector()
          Constructor Note that the collector is a consumer of remsets, while the mutator is a producer.
 
Method Summary
 void collectionPhase(short phaseId, boolean primary)
          Perform a (local, i.e.per-collector) collection phase.
 TraceLocal getCurrentTrace()
           
abstract  TraceLocal getFullHeapTrace()
           
private static Gen global()
           
 
Methods inherited from class org.mmtk.plan.StopTheWorldCollector
collect, 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

nurseryTrace

protected final GenNurseryTraceLocal nurseryTrace

los

protected final LargeObjectLocal los

modbuf

protected final ObjectReferenceDeque modbuf

remset

protected final AddressDeque remset

arrayRemset

protected final AddressPairDeque arrayRemset
Constructor Detail

GenCollector

public GenCollector()
Constructor

Note that the collector is a consumer of remsets, while the mutator is a producer. The GenMutator class is responsible for construction of the WriteBuffer (producer).

See Also:
GenMutator
Method Detail

collectionPhase

public void collectionPhase(short phaseId,
                            boolean primary)
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

private static Gen global()
Returns:
The active global plan as a Gen instance.

getCurrentTrace

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

getFullHeapTrace

public abstract TraceLocal getFullHeapTrace()
Returns:
The trace to use when collecting the mature space