org.mmtk.plan.immix
Class ImmixCollector

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.immix.ImmixCollector
All Implemented Interfaces:
Constants
Direct Known Subclasses:
StickyImmixCollector

public class ImmixCollector
extends StopTheWorldCollector

This class implements per-collector thread behavior and state for the Immix plan, which implements a full-heap immix collector.

Specifically, this class defines Immix collection behavior (through fastTrace and the collectionPhase method).

See Also:
for an overview of the immix algorithm.

FIXME The SegregatedFreeList class (and its decendents such as MarkSweepLocal) does not properly separate mutator and collector behaviors, so the immix field below should really not exist in this class as there is no collection-time allocation in this collector., Immix, MutatorLocal, StopTheWorldCollector, CollectorContext, Phase


Field Summary
protected  ImmixAllocator copy
           
protected  TraceLocal currentTrace
           
protected  ImmixDefragTraceLocal defragTrace
           
protected  ImmixTraceLocal fastTrace
          Instance fields
protected  CollectorLocal immix
           
protected  BumpPointer immortal
           
 
Fields inherited from class org.mmtk.plan.CollectorContext
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
ImmixCollector()
          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 Immix 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

fastTrace

protected ImmixTraceLocal fastTrace
Instance fields


defragTrace

protected ImmixDefragTraceLocal defragTrace

immix

protected CollectorLocal immix

copy

protected final ImmixAllocator copy

immortal

protected final BumpPointer immortal

currentTrace

protected TraceLocal currentTrace
Constructor Detail

ImmixCollector

public ImmixCollector()
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 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.

global

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

getCurrentTrace

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