org.mmtk.plan.generational
Class GenCollector

java.lang.Object
  extended by org.mmtk.plan.CollectorContext
      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
          Instance fields
protected  AddressDeque remset
           
 
Fields inherited from class org.mmtk.plan.CollectorContext
immortal, resetConcurrentWork, sanityLocal
 
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 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.CollectorContext
allocCopy, clearResetConcurrentWork, copyCheckAllocator, getId, initCollector, postCopy, resetConcurrentWork
 
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
Instance fields


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 per-collector collection phase.

Overrides:
collectionPhase in class SimpleCollector
Parameters:
phaseId - The collection phase to perform
primary - Use this thread for single-threaded local activities.

global

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

getCurrentTrace

public final TraceLocal getCurrentTrace()
Specified by:
getCurrentTrace in class CollectorContext
Returns:
The current trace instance.

getFullHeapTrace

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