org.mmtk.plan.markcompact
Class MCCollector

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.markcompact.MCCollector
All Implemented Interfaces:
Constants

public class MCCollector
extends StopTheWorldCollector

This class implements per-collector thread behavior and state for the MC plan, which implements a full-heap mark-compact collector.

Specifically, this class defines MC collection behavior (through trace and the collectionPhase method), and collection-time allocation.

See Also:
for an overview of the mark-compact algorithm.

, MCMutator, StopTheWorldCollector, CollectorContext


Field Summary
private  boolean currentTrace
           
private  MCForwardTraceLocal forwardTrace
           
private  MCMarkTraceLocal markTrace
          Instance fields
private  MarkCompactCollector mc
           
private static boolean TRACE_FORWARD
           
private static boolean TRACE_MARK
           
 
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
MCCollector()
          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)
          Perform a per-collector collection phase.
 TraceLocal getCurrentTrace()
           
private static MC global()
           
 void postCopy(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
          Perform any post-copy actions.
 
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

TRACE_MARK

private static final boolean TRACE_MARK
See Also:
Constant Field Values

TRACE_FORWARD

private static final boolean TRACE_FORWARD
See Also:
Constant Field Values

markTrace

private final MCMarkTraceLocal markTrace
Instance fields


forwardTrace

private final MCForwardTraceLocal forwardTrace

mc

private final MarkCompactCollector mc

currentTrace

private boolean currentTrace
Constructor Detail

MCCollector

public MCCollector()
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 void postCopy(ObjectReference object,
                     ObjectReference typeRef,
                     int bytes,
                     int allocator)
Perform any post-copy actions.

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.

collectionPhase

public final 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 - Perform any single-threaded activities using this thread.

getCurrentTrace

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

global

private static MC global()
Returns:
The active global plan as an MC instance.