public class CopyMSMutator extends StopTheWorldMutator
Specifically, this class defines CopyMS mutator-time allocation into the nursery and mature space (through pre-tenuring). Per-mutator thread collection semantics are also defined (flushing and restoring per-mutator allocator state).
CopyMS,
CopyMSCollector,
StopTheWorldMutator,
MutatorContext| Modifier and Type | Field and Description |
|---|---|
private MarkSweepLocal |
mature |
private CopyLocal |
nursery |
| Constructor and Description |
|---|
CopyMSMutator()
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.
|
void |
flush()
Flush mutator context, in response to a requestMutatorFlush.
|
Allocator |
getAllocatorFromSpace(Space space)
Return the allocator instance associated with a space
space, for this plan instance. |
void |
postAlloc(ObjectReference ref,
ObjectReference typeRef,
int bytes,
int allocator)
Perform post-allocation actions.
|
addressBulkCopy, addressRead, addressTryCompareAndSwap, addressWrite, assertRemsetsFlushed, booleanBulkCopy, booleanRead, booleanWrite, byteBulkCopy, byteRead, byteWrite, charBulkCopy, charRead, charWrite, checkAllocator, deinitMutator, doubleBulkCopy, doubleRead, doubleWrite, extentBulkCopy, extentRead, extentWrite, floatBulkCopy, floatRead, floatWrite, flushRememberedSets, getId, getLog, initMutator, intBulkCopy, intRead, intTryCompareAndSwap, intWrite, javaLangReferenceReadBarrier, longBulkCopy, longRead, longTryCompareAndSwap, longWrite, objectReferenceBulkCopy, objectReferenceNonHeapRead, objectReferenceNonHeapWrite, objectReferenceRead, objectReferenceTryCompareAndSwap, objectReferenceWrite, offsetBulkCopy, offsetRead, offsetWrite, shortBulkCopy, shortRead, shortWrite, wordBulkCopy, wordRead, wordTryCompareAndSwap, wordWriteprivate final MarkSweepLocal mature
public CopyMSMutator()
public Address alloc(int bytes, int align, int offset, int allocator, int site)
This class handles the default allocator from the mark sweep space, and delegates everything else to the superclass.
alloc in class MutatorContextbytes - 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 void postAlloc(ObjectReference ref, ObjectReference typeRef, int bytes, int allocator)
Initialize the object header for objects in the mark-sweep space, and delegate to the superclass for other objects.
postAlloc in class MutatorContextref - 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 Allocator getAllocatorFromSpace(Space space)
MutatorContextspace, for this plan instance.getAllocatorFromSpace in class MutatorContextspace - The space for which the allocator instance is desired.space, or null
if no appropriate allocator can be established.public final void collectionPhase(short phaseId, boolean primary)
collectionPhase in class SimpleMutatorphaseId - The unique phase identifierprimary - Should this thread be used to execute any single-threaded
local operations?public void flush()
MutatorContextflush in class MutatorContext