org.mmtk.plan.immix
Class ImmixCollector
java.lang.Object
org.mmtk.plan.CollectorContext
org.mmtk.plan.ParallelCollector
org.mmtk.plan.SimpleCollector
org.mmtk.plan.StopTheWorldCollector
org.mmtk.plan.immix.ImmixCollector
- All Implemented Interfaces:
- Constants
- Direct Known Subclasses:
- StickyImmixCollector
public class ImmixCollector
- extends StopTheWorldCollector
This class implements per-collector thread behavior
and state for the Immix plan, which implements a full-heap
immix collector.
Specifically, this class defines Immix collection behavior
(through fastTrace
and the collectionPhase
method).
- See Also:
for an overview of the immix algorithm.
FIXME The SegregatedFreeList class (and its decendents such as
MarkSweepLocal) does not properly separate mutator and collector
behaviors, so the immix field below should really not exist in
this class as there is no collection-time allocation in this
collector.
,
Immix
,
MutatorLocal
,
StopTheWorldCollector
,
CollectorContext
,
Phase
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 |
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 |
getCurrentTrace()
|
private static Immix |
global()
|
void |
postCopy(ObjectReference object,
ObjectReference typeRef,
int bytes,
int allocator)
Perform any post-copy actions. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
fastTrace
protected ImmixTraceLocal fastTrace
defragTrace
protected ImmixDefragTraceLocal defragTrace
immix
protected CollectorLocal immix
copy
protected final ImmixAllocator copy
immortal
protected final BumpPointer immortal
currentTrace
protected TraceLocal currentTrace
ImmixCollector
public ImmixCollector()
- Constructor
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
- The object that is being copied.bytes
- The size of the space to be allocated (in bytes)align
- Required alignment for the copyoffset
- 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 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 SimpleCollector
- Parameters:
phaseId
- The unique phase identifierprimary
- Should this thread be used to execute any single-threaded
local operations?
global
private static Immix global()
- Returns:
- The active global plan as an
Immix
instance.
getCurrentTrace
public final TraceLocal getCurrentTrace()
- Overrides:
getCurrentTrace
in class ParallelCollector
- Returns:
- The current fastTrace instance.