org.mmtk.plan.generational.copying
Class GenCopyCollector

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
                  extended by org.mmtk.plan.generational.copying.GenCopyCollector
All Implemented Interfaces:
Constants

public class GenCopyCollector
extends GenCollector

This class implements per-collector thread behavior and state for the GenCopy two-generational copying collector.

Specifically, this class defines semantics specific to the collection of the mature generation (GenCollector defines nursery semantics). In particular the mature space allocator is defined (for collection-time allocation into the mature space), and the mature space per-collector thread collection time semantics are defined.

See Also:
for a description of the GenCopy algorithm., GenCopy, GenCopyMutator, GenCollector, StopTheWorldCollector, CollectorContext

Field Summary
private  CopyLocal mature
          The allocator for the mature space
private  GenCopyMatureTraceLocal matureTrace
          The trace object for full-heap collections
 
Fields inherited from class org.mmtk.plan.generational.GenCollector
arrayRemset, los, modbuf, nurseryTrace, 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
GenCopyCollector()
          Constructor
 
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)
          Execute a per-collector collection phase.
 TraceLocal getFullHeapTrace()
           
private static GenCopy global()
           
 void postCopy(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
          Perform any post-copy actions.
protected  void showMature()
          Show the status of the mature allocator.
 
Methods inherited from class org.mmtk.plan.generational.GenCollector
getCurrentTrace
 
Methods inherited from class org.mmtk.plan.StopTheWorldCollector
collect, concurrentCollect, concurrentCollectionPhase
 
Methods inherited from class org.mmtk.plan.CollectorContext
clearResetConcurrentWork, copyCheckAllocator, getId, initCollector, resetConcurrentWork
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mature

private final CopyLocal mature
The allocator for the mature space


matureTrace

private final GenCopyMatureTraceLocal matureTrace
The trace object for full-heap collections

Constructor Detail

GenCopyCollector

public GenCopyCollector()
Constructor

Method Detail

allocCopy

public 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 - A reference to the original object
bytes - The size of the space to be allocated (in bytes)
align - The requested alignment.
offset - The alignment offset.
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 we clear any bits used for this object's GC metadata.

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 to allocate from

collectionPhase

public void collectionPhase(short phaseId,
                            boolean primary)
Execute a per-collector collection phase.

Overrides:
collectionPhase in class GenCollector
Parameters:
phaseId - The phase to execute.
primary - True if this thread should peform local single-threaded actions.

global

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

showMature

protected final void showMature()
Show the status of the mature allocator.


getFullHeapTrace

public final TraceLocal getFullHeapTrace()
Specified by:
getFullHeapTrace in class GenCollector
Returns:
The trace to use when collecting the mature space