org.mmtk.plan.generational.copying
Class GenCopyMutator

java.lang.Object
  extended by org.mmtk.plan.MutatorContext
      extended by org.mmtk.plan.SimpleMutator
          extended by org.mmtk.plan.StopTheWorldMutator
              extended by org.mmtk.plan.generational.GenMutator
                  extended by org.mmtk.plan.generational.copying.GenCopyMutator
All Implemented Interfaces:
Constants

public class GenCopyMutator
extends GenMutator

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

Specifically, this class defines mutator-time semantics specific to the mature generation (GenMutator defines nursery semantics). In particular the mature space allocator is defined (for mutator-time allocation into the mature space via pre-tenuring), and the mature space per-mutator thread collection time semantics are defined (rebinding the mature space allocator).

See Also:
for a description of the GenCopy algorithm., GenCopy, GenCopyCollector, GenMutator, StopTheWorldMutator, MutatorContext

Field Summary
private  CopyLocal mature
          The allocator for the copying mature space (the mutator may "pretenure" objects into this space otherwise used only by the collector)
 
Fields inherited from class org.mmtk.plan.generational.GenMutator
arrayRemset, nursery, remset
 
Fields inherited from class org.mmtk.plan.MutatorContext
immortal, lgcode, log, los, nonmove, smcode
 
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
GenCopyMutator()
          Constructor
 
Method Summary
 Address alloc(int bytes, int align, int offset, int allocator, int site)
          Allocate space (for an object) in the specified space
 void collectionPhase(short phaseId, boolean primary)
          Execute a per-mutator collection phase.
 Allocator getAllocatorFromSpace(Space space)
          Return the allocator instance associated with a space space, for this plan instance.
private static GenCopy global()
           
 void initMutator(int id)
          Called before the MutatorContext is used, but after the context has been fully registered and is visible to collection.
 void postAlloc(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
          Perform post-allocation initialization of an object
 
Methods inherited from class org.mmtk.plan.generational.GenMutator
assertRemsetsFlushed, flushRememberedSets, objectReferenceBulkCopy, objectReferenceNonHeapWrite, objectReferenceTryCompareAndSwap, objectReferenceWrite
 
Methods inherited from class org.mmtk.plan.MutatorContext
addressBulkCopy, addressRead, addressTryCompareAndSwap, addressWrite, booleanBulkCopy, booleanRead, booleanWrite, byteBulkCopy, byteRead, byteWrite, charBulkCopy, charRead, charWrite, checkAllocator, deinitMutator, doubleBulkCopy, doubleRead, doubleWrite, extentBulkCopy, extentRead, extentWrite, floatBulkCopy, floatRead, floatWrite, flush, getId, getLog, intBulkCopy, intRead, intTryCompareAndSwap, intWrite, javaLangReferenceReadBarrier, longBulkCopy, longRead, longTryCompareAndSwap, longWrite, objectReferenceNonHeapRead, objectReferenceRead, offsetBulkCopy, offsetRead, offsetWrite, shortBulkCopy, shortRead, shortWrite, wordBulkCopy, wordRead, wordTryCompareAndSwap, wordWrite
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mature

private CopyLocal mature
The allocator for the copying mature space (the mutator may "pretenure" objects into this space otherwise used only by the collector)

Constructor Detail

GenCopyMutator

public GenCopyMutator()
Constructor

Method Detail

initMutator

public void initMutator(int id)
Called before the MutatorContext is used, but after the context has been fully registered and is visible to collection.

Overrides:
initMutator in class MutatorContext
Parameters:
id - The id of this mutator context.

alloc

public final Address alloc(int bytes,
                           int align,
                           int offset,
                           int allocator,
                           int site)
Allocate space (for an object) in the specified space

Overrides:
alloc in class GenMutator
Parameters:
bytes - The size of the space to be allocated (in bytes)
align - The requested alignment.
offset - The alignment offset.
allocator - The allocator to allocate from
site - Allocation site
Returns:
The address of the first byte of the allocated region

postAlloc

public final void postAlloc(ObjectReference object,
                            ObjectReference typeRef,
                            int bytes,
                            int allocator)
Perform post-allocation initialization of an object

Overrides:
postAlloc in class GenMutator
Parameters:
object - The newly allocated object
typeRef - the type reference for the instance being created
allocator - The allocator to allocate from
bytes - The size of the space allocated (in bytes)

getAllocatorFromSpace

public final Allocator getAllocatorFromSpace(Space space)
Return the allocator instance associated with a space space, for this plan instance.

Overrides:
getAllocatorFromSpace in class GenMutator
Parameters:
space - The space for which the allocator instance is desired.
Returns:
The allocator instance associated with this plan instance which is allocating into space, or null if no appropriate allocator can be established.

collectionPhase

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

Overrides:
collectionPhase in class GenMutator
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.