org.mmtk.plan.concurrent
Class Concurrent

java.lang.Object
  extended by org.mmtk.plan.Plan
      extended by org.mmtk.plan.Simple
          extended by org.mmtk.plan.concurrent.Concurrent
All Implemented Interfaces:
Constants
Direct Known Subclasses:
CMS

public abstract class Concurrent
extends Simple

This class implements the global state of a concurrent collector.


Field Summary
static short CLEAR_BARRIER_ACTIVE
           
static short CONCURRENT_CLOSURE
           
protected static short concurrentClosure
          Perform the initial determination of liveness from the roots.
static short FLUSH_COLLECTOR
           
static short FLUSH_MUTATOR
           
private  boolean inConcurrentCollection
           
protected static short postSanityPhase
          Validate, build and validate the second sanity table
protected static short preemptConcurrentClosure
          When we preempt a concurrent marking phase we must flush mutators and then continue the closure.
protected static short preSanityPhase
          Build, validate and then build another sanity table
static short SET_BARRIER_ACTIVE
           
 
Fields inherited from class org.mmtk.plan.Simple
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
 
Fields inherited from class org.mmtk.plan.Plan
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
 
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
 
Constructor Summary
Concurrent()
          Constructor.
 
Method Summary
 void collectionPhase(short phaseId)
          Perform a (global) collection phase.
protected  boolean concurrentCollectionRequired()
          This method controls the triggering of an atomic phase of a concurrent collection.
 boolean lastCollectionFullHeap()
           
 void processOptions()
          The processOptions method is called by the runtime immediately after command-line arguments are available.
 
Methods inherited from class org.mmtk.plan.Simple
replacePhase, replacePlaceholderPhase, switchNurseryZeroingApproach
 
Methods inherited from class org.mmtk.plan.Plan
availableMemory, bootTimeWriteBarrier, collectionRequired, enableAllocation, enableCollection, forceFullHeapCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getCollectionReserve, getPagesAvail, getPagesReserved, getPagesUsed, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isCurrentGCNursery, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, lastCollectionWasExhaustive, loadObjectReference, logPoll, notifyExit, poll, printDetailedTiming, printPostStats, printPreStats, printUsedPages, registerSpecializedMethods, reservedMemory, resetCollectionTrigger, sanityExpectedRC, sanityLinearScan, setGCStatus, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, usedMemory, willNeverMove
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FLUSH_MUTATOR

public static final short FLUSH_MUTATOR

SET_BARRIER_ACTIVE

public static final short SET_BARRIER_ACTIVE

FLUSH_COLLECTOR

public static final short FLUSH_COLLECTOR

CLEAR_BARRIER_ACTIVE

public static final short CLEAR_BARRIER_ACTIVE

preemptConcurrentClosure

protected static final short preemptConcurrentClosure
When we preempt a concurrent marking phase we must flush mutators and then continue the closure.


CONCURRENT_CLOSURE

public static final short CONCURRENT_CLOSURE

concurrentClosure

protected static final short concurrentClosure
Perform the initial determination of liveness from the roots.


preSanityPhase

protected static final short preSanityPhase
Build, validate and then build another sanity table


postSanityPhase

protected static final short postSanityPhase
Validate, build and validate the second sanity table


inConcurrentCollection

private boolean inConcurrentCollection
Constructor Detail

Concurrent

public Concurrent()
Constructor.

Method Detail

processOptions

public void processOptions()
The processOptions method is called by the runtime immediately after command-line arguments are available. Allocation must be supported prior to this point because the runtime infrastructure may require allocation in order to parse the command line arguments. For this reason all plans should operate gracefully on the default minimum heap size until the point that processOptions is called.

Overrides:
processOptions in class Plan

collectionPhase

public void collectionPhase(short phaseId)
Description copied from class: Simple
Perform a (global) collection phase.

Overrides:
collectionPhase in class Simple
Parameters:
phaseId - The unique id of the phase to perform.

concurrentCollectionRequired

protected boolean concurrentCollectionRequired()
Description copied from class: Plan
This method controls the triggering of an atomic phase of a concurrent collection. It is called periodically during allocation.

Overrides:
concurrentCollectionRequired in class Plan
Returns:
true if a collection is requested by the plan.

lastCollectionFullHeap

public boolean lastCollectionFullHeap()
Overrides:
lastCollectionFullHeap in class Plan
Returns:
Whether last GC is a full GC.