org.mmtk.plan.semispace
Class SSCollector

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.semispace.SSCollector
All Implemented Interfaces:
Constants
Direct Known Subclasses:
GCTraceCollector, SSGCspyCollector, UsePrimitiveWriteBarriersCollector

public class SSCollector
extends StopTheWorldCollector

This class implements per-collector thread behavior and state for the SS plan, which implements a full-heap semi-space collector.

Specifically, this class defines SS collection behavior (through trace and the collectionPhase method), and collection-time allocation (copying of objects).

See SS for an overview of the semi-space algorithm.

See Also:
SS, SSMutator, StopTheWorldCollector, CollectorContext

Field Summary
protected  LargeObjectLocal los
           
protected  CopyLocal ss
           
protected  SSTraceLocal trace
          Instance fields
 
Fields inherited from class org.mmtk.plan.CollectorContext
immortal, 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
  SSCollector()
          Constructor
protected SSCollector(SSTraceLocal tr)
          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 SS global()
           
static boolean isSemiSpaceObject(ObjectReference object)
          Return true if the given reference is to an object that is within one of the semi-spaces.
 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

trace

protected final SSTraceLocal trace
Instance fields


ss

protected final CopyLocal ss

los

protected final LargeObjectLocal los
Constructor Detail

SSCollector

public SSCollector()
Constructor


SSCollector

protected SSCollector(SSTraceLocal tr)
Constructor

Parameters:
tr - The trace to use
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.

isSemiSpaceObject

public static boolean isSemiSpaceObject(ObjectReference object)
Return true if the given reference is to an object that is within one of the semi-spaces.

Parameters:
object - The object in question
Returns:
True if the given reference is to an object that is within one of the semi-spaces.

global

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

getCurrentTrace

public TraceLocal getCurrentTrace()
Specified by:
getCurrentTrace in class CollectorContext
Returns:
the current trace object.