org.mmtk.plan.refcount.generational
Class GenRCMutator

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.refcount.RCBaseMutator
                  extended by org.mmtk.plan.refcount.generational.GenRCMutator
All Implemented Interfaces:
Constants

public class GenRCMutator
extends RCBaseMutator

This class implements the mutator context for a simple reference counting collector.


Field Summary
private  CopyLocal nursery
          Instance fields
 
Fields inherited from class org.mmtk.plan.MutatorContext
id, immortal, log, los
 
Fields inherited from interface org.mmtk.utility.Constants
AALOAD_READ_BARRIER, AASTORE_WRITE_BARRIER, ALIGNMENT_VALUE, BITS_IN_ADDRESS, BITS_IN_BYTE, BITS_IN_INT, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BYTE, 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, GETFIELD_READ_BARRIER, GETSTATIC_READ_BARRIER, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BYTE, 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_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, PUTFIELD_WRITE_BARRIER, PUTSTATIC_WRITE_BARRIER, SUPPORT_CARD_SCANNING
 
Constructor Summary
GenRCMutator()
           
 
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.
 Allocator getAllocatorFromSpace(Space space)
          Return the allocator instance associated with a space space, for this plan instance.
 Space getSpaceFromAllocator(Allocator a)
          Return the space into which an allocator is allocating.
 void postAlloc(ObjectReference ref, ObjectReference typeRef, int bytes, int allocator)
          Perform post-allocation actions.
 
Methods inherited from class org.mmtk.plan.refcount.RCBaseMutator
assertRemsetsFlushed, flushRememberedSets, tryCompareAndSwapWriteBarrier, writeBarrier, writeBarrier
 
Methods inherited from class org.mmtk.plan.MutatorContext
checkAllocator, flush, getId, getOwnAllocator, initMutator, readBarrier, referenceTypeReadBarrier
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

nursery

private final CopyLocal nursery
Instance fields

Constructor Detail

GenRCMutator

public GenRCMutator()
Method Detail

alloc

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

Overrides:
alloc in class RCBaseMutator
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 address of the newly allocated memory.

postAlloc

public void postAlloc(ObjectReference ref,
                      ObjectReference typeRef,
                      int bytes,
                      int allocator)
Perform post-allocation actions. For many allocators none are required.

Overrides:
postAlloc in class RCBaseMutator
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

getSpaceFromAllocator

public Space getSpaceFromAllocator(Allocator a)
Return the space into which an allocator is allocating. This particular method will match against those spaces defined at this level of the class hierarchy. Subclasses must deal with spaces they define and refer to superclasses appropriately.

Overrides:
getSpaceFromAllocator in class RCBaseMutator
Parameters:
a - An allocator
Returns:
The space into which a is allocating, or null if there is no space associated with a.

getAllocatorFromSpace

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

Overrides:
getAllocatorFromSpace in class RCBaseMutator
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 final void collectionPhase(short phaseId,
                                  boolean primary)
Perform a per-mutator collection phase.

Overrides:
collectionPhase in class RCBaseMutator
Parameters:
phaseId - The collection phase to perform
primary - perform any single-threaded local activities.