public class GenCopyMutator extends GenMutator
GenCopy
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).
Modifier and Type | Field and Description |
---|---|
private CopyLocal |
mature
The allocator for the copying mature space (the mutator may
"pretenure" objects into this space otherwise used only by
the collector)
|
arrayRemset, nursery, remset
Constructor and Description |
---|
GenCopyMutator()
Constructor
|
Modifier and Type | Method and Description |
---|---|
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. |
private static GenCopy |
global() |
void |
initMutator(int id)
Called before the MutatorContext is used, but after the context has been
fully registered and is visible to collection.
|
void |
postAlloc(ObjectReference object,
ObjectReference typeRef,
int bytes,
int allocator)
Perform post-allocation actions.
|
assertRemsetsFlushed, flushRememberedSets, objectReferenceBulkCopy, objectReferenceNonHeapWrite, objectReferenceTryCompareAndSwap, objectReferenceWrite
addressBulkCopy, addressRead, addressTryCompareAndSwap, addressWrite, booleanBulkCopy, booleanRead, booleanWrite, byteBulkCopy, byteRead, byteWrite, charBulkCopy, charRead, charWrite, checkAllocator, deinitMutator, doubleBulkCopy, doubleRead, doubleWrite, extentBulkCopy, extentRead, extentWrite, floatBulkCopy, floatRead, floatWrite, flush, getId, getLog, intBulkCopy, intRead, intTryCompareAndSwap, intWrite, javaLangReferenceReadBarrier, longBulkCopy, longRead, longTryCompareAndSwap, longWrite, objectReferenceNonHeapRead, objectReferenceRead, offsetBulkCopy, offsetRead, offsetWrite, shortBulkCopy, shortRead, shortWrite, wordBulkCopy, wordRead, wordTryCompareAndSwap, wordWrite
public GenCopyMutator()
public void initMutator(int id)
initMutator
in class MutatorContext
id
- The id of this mutator context.public final Address alloc(int bytes, int align, int offset, int allocator, int site)
alloc
in class GenMutator
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 sitepublic final void postAlloc(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
MutatorContext
postAlloc
in class GenMutator
object
- The newly allocated objecttypeRef
- the type reference for the instance being createdbytes
- The size of the space to be allocated (in bytes)allocator
- The allocator number to be used for this allocationpublic final Allocator getAllocatorFromSpace(Space space)
MutatorContext
space
, for this plan instance.getAllocatorFromSpace
in class GenMutator
space
- The space for which the allocator instance is desired.space
, or null
if no appropriate allocator can be established.public void collectionPhase(short phaseId, boolean primary)
collectionPhase
in class GenMutator
phaseId
- The unique phase identifierprimary
- Should this thread be used to execute any single-threaded
local operations?