public class MC extends StopTheWorld
FIXME Need algorithmic overview and references.
All plans make a clear distinction between global and thread-local activities, and divides global and local state into separate class hierarchies. Global activities must be synchronized, whereas no synchronization is required for thread-local activities. There is a single instance of Plan (or the appropriate sub-class), and a 1:1 mapping of PlanLocal to "kernel threads" (aka CPUs). Thus instance methods of PlanLocal allow fast, unsychronized access to functions such as allocation and collection.
The global instance defines and manages static resources (such as memory and virtual memory resources). This mapping of threads to instances is crucial to understanding the correctness and performance properties of MMTk plans.
Modifier and Type | Field and Description |
---|---|
static short |
CALCULATE_FP
Calculate forwarding pointers via a linear scan over the heap
|
static short |
COMPACT
Perform compaction via a linear scan over the heap
|
static short |
FORWARD_CLOSURE |
Trace |
forwardTrace
This trace updates pointers with the forwarded references
|
static int |
MARK_COMPACT
The space descriptor
|
Trace |
markTrace
This trace sets the mark bit in live objects
|
short |
mcCollection
This is the phase that is executed to perform a mark-compact collection.
|
static MarkCompactSpace |
mcSpace
The mark compact space itself
|
static short |
PREPARE_FORWARD |
static short |
RELEASE_FORWARD |
static int |
SCAN_FORWARD
Specialized method identifier for the FORWARD phase
|
static int |
SCAN_MARK
Specialized method identifier for the MARK phase
|
postSanityPhase, preSanityPhase
CLOSURE, collection, collectionAttempt, COMPLETE, completeClosurePhase, FINALIZABLE, finishPhase, FORWARD, FORWARD_FINALIZABLE, FORWARD_REFS, forwardPhase, INITIATE, initPhase, PHANTOM_REFS, POST_SANITY_PLACEHOLDER, PRE_SANITY_PLACEHOLDER, PREPARE, PREPARE_STACKS, prepareStacks, refTypeClosurePhase, RELEASE, rootClosurePhase, ROOTS, SANITY_BUILD_TABLE, SANITY_CHECK_TABLE, SANITY_COPY_ROOTS, SANITY_PREPARE, SANITY_RELEASE, SANITY_ROOTS, SANITY_SET_POSTGC, SANITY_SET_PREGC, sanityBuildPhase, sanityCheckPhase, SET_COLLECTION_KIND, SOFT_REFS, STACK_ROOTS, WEAK_REFS, WEAK_TRACK_REFS
ALLOC_CODE, ALLOC_COLD_CODE, ALLOC_DEFAULT, ALLOC_GCSPY, ALLOC_HOT_CODE, ALLOC_IMMORTAL, ALLOC_LARGE_CODE, ALLOC_LOS, ALLOC_NON_MOVING, ALLOC_NON_REFERENCE, ALLOC_PRIMITIVE_LOS, ALLOC_STACK, allocationSiteCount, ALLOCATORS, concurrentWorkers, controlCollectorContext, DEFAULT_MAX_NURSERY, DEFAULT_MIN_NURSERY, DEFAULT_SITE, defaultCollectorContext, emergencyCollection, GATHER_WRITE_BARRIER_STATS, GC_PREPARE, GC_PROPER, IMMORTAL, immortalSpace, insideHarness, internalTriggeredCollection, LARGE_CODE, largeCodeSpace, lastInternalTriggeredCollection, LOS, loSpace, MAX_NON_LOS_COPY_BYTES, MAX_NON_LOS_DEFAULT_ALLOC_BYTES, MAX_NON_LOS_NONMOVING_ALLOC_BYTES, META, metaDataSpace, NEEDS_LOG_BIT_IN_HEADER, NON_MOVING, NON_PARTICIPANT, nonMovingSpace, NOT_IN_GC, parallelWorkers, pretenureThreshold, SANITY, sanityChecker, sanitySpace, SCAN_BOOT_IMAGE, SMALL_CODE, smallCodeSpace, stacksPrepared, totalTime, USE_CODE_SPACE, userTriggeredCollection, VM_SPACE, vmSpace
Constructor and Description |
---|
MC()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
collectionPhase(short phaseId)
Perform a (global) collection phase.
|
int |
getPagesUsed()
Return the number of pages reserved for use given the pending
allocation.
|
protected void |
registerSpecializedMethods()
Registers specialized methods.
|
int |
sanityExpectedRC(ObjectReference object,
int sanityRootRC)
Return the expected reference count.
|
boolean |
willNeverMove(ObjectReference object)
Can this object ever move.
|
processOptions
replacePhase, replacePlaceholderPhase, switchNurseryZeroingApproach
availableMemory, bootTimeWriteBarrier, collectionRequired, concurrentCollectionRequired, determineThreadCount, enableAllocation, enableCollection, forceFullHeapCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getCollectionReserve, getPagesAvail, getPagesReserved, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isCurrentGCNursery, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, lastCollectionFullHeap, lastCollectionWasExhaustive, loadObjectReference, logPoll, notifyExit, poll, preCollectorSpawn, printDetailedTiming, printPostStats, printPreStats, printUsedPages, reservedMemory, resetCollectionTrigger, sanityLinearScan, setBuildTimeGCByte, setGCStatus, spawnCollectorThreads, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, usedMemory
public static final MarkCompactSpace mcSpace
public static final int MARK_COMPACT
public static final int SCAN_MARK
public static final int SCAN_FORWARD
public static final short PREPARE_FORWARD
public static final short FORWARD_CLOSURE
public static final short RELEASE_FORWARD
public static final short CALCULATE_FP
public static final short COMPACT
public short mcCollection
public final Trace forwardTrace
public MC()
public final void collectionPhase(short phaseId)
collectionPhase
in class Simple
phaseId
- The unique id of the phase to perform.public int getPagesUsed()
getPagesUsed
in class Plan
public boolean willNeverMove(ObjectReference object)
Plan
willNeverMove
in class Plan
object
- The object in questiontrue
if it is not possible that the object will ever move.public int sanityExpectedRC(ObjectReference object, int sanityRootRC)
Plan
true/false
relationship.sanityExpectedRC
in class Plan
object
- The object to check.sanityRootRC
- The number of root references to the object.protected void registerSpecializedMethods()
Plan
registerSpecializedMethods
in class Plan