org.mmtk.plan.generational.marksweep
Class GenMSMutator

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.marksweep.GenMSMutator
All Implemented Interfaces:
Constants

public class GenMSMutator
extends GenMutator

This class implements per-mutator thread behavior and state for the GenMS 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 GenMS for a description of the GenMS algorithm.

See Also:
GenMS, GenMSCollector, GenMutator, StopTheWorldMutator, MutatorContext

Field Summary
private  MarkSweepLocal mature
          The allocator for the mark-sweep mature space (the mutator may "pretenure" objects into this space which is 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
GenMSMutator()
          Constructor
 
Method Summary
 Address alloc(int bytes, int align, int offset, int allocator, int site)
          Allocate memory for an object.
 void collectionPhase(short phaseId, boolean primary)
          Perform a per-mutator collection phase.
 void flush()
          Flush mutator context, in response to a requestMutatorFlush.
 Allocator getAllocatorFromSpace(Space space)
          Return the allocator instance associated with a space space, for this plan instance.
private static GenMS global()
           
 void postAlloc(ObjectReference ref, ObjectReference typeRef, int bytes, int allocator)
          Perform post-allocation actions.
 
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, getId, getLog, initMutator, 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 final MarkSweepLocal mature
The allocator for the mark-sweep mature space (the mutator may "pretenure" objects into this space which is otherwise used only by the collector)

Constructor Detail

GenMSMutator

public GenMSMutator()
Constructor

Method Detail

alloc

public final Address alloc(int bytes,
                           int align,
                           int offset,
                           int allocator,
                           int site)
Allocate memory for an object.

Overrides:
alloc in class GenMutator
Parameters:
bytes - The number of bytes required for the object.
align - Required alignment for the object.
offset - Offset associated with the alignment.
allocator - The allocator associated with this request.
site - Allocation site
Returns:
The low address of the allocated chunk.

postAlloc

public final void postAlloc(ObjectReference ref,
                            ObjectReference typeRef,
                            int bytes,
                            int allocator)
Description copied from class: MutatorContext
Perform post-allocation actions. For many allocators none are required.

Overrides:
postAlloc in class GenMutator
Parameters:
ref - 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 number to be used for this allocation

getAllocatorFromSpace

public Allocator getAllocatorFromSpace(Space space)
Description copied from class: MutatorContext
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)
Perform a per-mutator collection phase. This is executed by one collector thread on behalf of a mutator thread.

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

flush

public void flush()
Description copied from class: MutatorContext
Flush mutator context, in response to a requestMutatorFlush. Also called by the default implementation of deinitMutator.

Overrides:
flush in class MutatorContext

global

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