org.mmtk.plan.generational.immix
Class GenImmixCollector

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
                      extended by org.mmtk.plan.generational.immix.GenImmixCollector
All Implemented Interfaces:
Constants
Direct Known Subclasses:
Selected.Collector

public class GenImmixCollector
extends GenCollector

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

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

See Also:
for a description of the GenImmix algorithm., GenImmix, GenImmixMutator, GenCollector, StopTheWorldCollector, CollectorContext

Field Summary
private  ImmixAllocator copy
           
private  ImmixAllocator defragCopy
           
private  GenImmixMatureDefragTraceLocal defragTrace
           
private  CollectorLocal immix
           
private  GenImmixMatureTraceLocal matureTrace
           
 
Fields inherited from class org.mmtk.plan.generational.GenCollector
arrayRemset, los, modbuf, nurseryTrace, 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
GenImmixCollector()
           
 
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 (local, i.e.per-collector) collection phase.
 TraceLocal getFullHeapTrace()
           
private static GenImmix global()
           
 void postCopy(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
          Perform any post-copy actions.
 
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.ParallelCollector
parallelWorkerCount, parallelWorkerOrdinal, park, rendezvous, run
 
Methods inherited from class org.mmtk.plan.CollectorContext
copyCheckAllocator, getId, getLog, initCollector
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

matureTrace

private final GenImmixMatureTraceLocal matureTrace

defragTrace

private final GenImmixMatureDefragTraceLocal defragTrace

immix

private final CollectorLocal immix

copy

private final ImmixAllocator copy

defragCopy

private final ImmixAllocator defragCopy
Constructor Detail

GenImmixCollector

public GenImmixCollector()
Method Detail

allocCopy

public final 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 - The object that is being copied.
bytes - The size of the space to be allocated (in bytes)
align - Required alignment for the copy
offset - Offset associated with the alignment.
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)
Description copied from class: CollectorContext
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 (local, i.e.per-collector) collection phase.

Overrides:
collectionPhase in class GenCollector
Parameters:
phaseId - The unique phase identifier
primary - Should this thread be used to execute any single-threaded local operations?

getFullHeapTrace

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

global

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