|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.mmtk.plan.MutatorContext
org.mmtk.plan.SimpleMutator
org.mmtk.plan.StopTheWorldMutator
org.mmtk.plan.marksweep.MSMutator
org.mmtk.plan.stickyms.StickyMSMutator
public class StickyMSMutator
This class implements per-mutator thread behavior and state for the StickyMS plan, which implements a generational mark-sweep collector.
Specifically, this class defines MS mutator-time allocation and per-mutator thread collection semantics (flushing and restoring per-mutator allocator state).
*
StickyMS,
StickyMSCollector,
MutatorContext,
Phase| Field Summary | |
|---|---|
private ObjectReferenceDeque |
modBuffer
Instance fields |
| Fields inherited from class org.mmtk.plan.marksweep.MSMutator |
|---|
ms |
| Fields inherited from class org.mmtk.plan.MutatorContext |
|---|
immortal, lgcode, log, los, nonmove, smcode |
| Constructor Summary | |
|---|---|
StickyMSMutator()
Constructor |
|
| Method Summary | |
|---|---|
void |
assertRemsetFlushed()
Assert that the remsets have been flushed. |
void |
collectionPhase(short phaseId,
boolean primary)
Perform a per-mutator collection phase. |
void |
flush()
Flush mutator context, in response to a requestMutatorFlush. |
void |
flushRememberedSets()
Flush per-mutator remembered sets into the global remset pool. |
private static StickyMS |
global()
|
private void |
logSource(ObjectReference src)
Add an object to the modified objects buffer and mark the object has having been logged. |
boolean |
objectReferenceBulkCopy(ObjectReference src,
Offset srcOffset,
ObjectReference dst,
Offset dstOffset,
int bytes)
A number of references are about to be copied from object src to object dst (as in an array
copy). |
void |
objectReferenceWrite(ObjectReference src,
Address slot,
ObjectReference tgt,
Word metaDataA,
Word metaDataB,
int mode)
A new reference is about to be created. |
| Methods inherited from class org.mmtk.plan.marksweep.MSMutator |
|---|
alloc, getAllocatorFromSpace, postAlloc |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private ObjectReferenceDeque modBuffer
| Constructor Detail |
|---|
public StickyMSMutator()
| Method Detail |
|---|
public final void objectReferenceWrite(ObjectReference src,
Address slot,
ObjectReference tgt,
Word metaDataA,
Word metaDataB,
int mode)
In this case, we remember the address of the source of the pointer if the new reference points into the nursery from non-nursery space.
objectReferenceWrite in class MutatorContextsrc - The object into which the new reference will be storedslot - The address into which the new reference will be
stored.tgt - The target of the new referencemetaDataA - A value that assists the host VM in creating a storemetaDataB - A value that assists the host VM in creating a storemode - The mode of the store (eg putfield, putstatic etc)
public final boolean objectReferenceBulkCopy(ObjectReference src,
Offset srcOffset,
ObjectReference dst,
Offset dstOffset,
int bytes)
src to object dst (as in an array
copy). Thus, dst is the mutated object. Take
appropriate write barrier actions.In this case, we remember the mutated source address range and will scan that address range at GC time.
objectReferenceBulkCopy in class MutatorContextsrc - The source of the values to copiedsrcOffset - The offset of the first source address, in
bytes, relative to src (in principle, this could be
negative).dst - The mutated object, i.e. the destination of the copy.dstOffset - The offset of the first destination address, in
bytes relative to tgt (in principle, this could be
negative).bytes - The size of the region being copied, in bytes.
private void logSource(ObjectReference src)
src - The object to be loggedpublic final void flushRememberedSets()
flushRememberedSets in class MutatorContextpublic final void assertRemsetFlushed()
public final void collectionPhase(short phaseId,
boolean primary)
collectionPhase in class MSMutatorphaseId - The collection phase to performprimary - Perform any single-threaded activities using this thread.public void flush()
flush in class MSMutatorprivate static StickyMS global()
MSGen instance.
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||