org.mmtk.plan.generational.immix
Class GenImmixCollector
java.lang.Object
org.mmtk.plan.CollectorContext
org.mmtk.plan.ParallelCollector
org.mmtk.plan.SimpleCollector
org.mmtk.plan.StopTheWorldCollector
org.mmtk.plan.generational.GenCollector
org.mmtk.plan.generational.immix.GenImmixCollector
- All Implemented Interfaces:
- Constants
- Direct Known Subclasses:
- Selected.Collector
public class GenImmixCollector
- extends GenCollector
This class implements per-collector thread behavior and state for
the GenImmix
two-generational copying collector.
Specifically, this class defines semantics specific to the collection of
the copy generation (GenCollector
defines nursery semantics).
In particular the copy space allocator is defined (for collection-time
allocation into the copy space), and the copy space per-collector thread
collection time semantics are defined.
- See Also:
for a description of the GenImmix
algorithm.
,
GenImmix
,
GenImmixMutator
,
GenCollector
,
StopTheWorldCollector
,
CollectorContext
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 |
getFullHeapTrace()
|
private static GenImmix |
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 |
matureTrace
private final GenImmixMatureTraceLocal matureTrace
defragTrace
private final GenImmixMatureDefragTraceLocal defragTrace
immix
private final CollectorLocal immix
copy
private final ImmixAllocator copy
defragCopy
private final ImmixAllocator defragCopy
GenImmixCollector
public GenImmixCollector()
allocCopy
public final 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 final 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 GenCollector
- Parameters:
phaseId
- The unique phase identifierprimary
- Should this thread be used to execute any single-threaded
local operations?
getFullHeapTrace
public final TraceLocal getFullHeapTrace()
- Specified by:
getFullHeapTrace
in class GenCollector
- Returns:
- The trace to use when collecting the mature space
global
private static GenImmix global()
- Returns:
- The active global plan as a
GenImmix
instance.