org.mmtk.plan.refcount.generational
Class GenRC

java.lang.Object
  extended by org.mmtk.plan.Plan
      extended by org.mmtk.plan.Simple
          extended by org.mmtk.plan.StopTheWorld
              extended by org.mmtk.plan.refcount.RCBase
                  extended by org.mmtk.plan.refcount.generational.GenRC
All Implemented Interfaces:
Constants

public class GenRC
extends RCBase

This class implements the global state of a a simple reference counting collector.


Field Summary
static int ALLOC_NURSERY
           
static int ALLOC_RC
           
static int NURSERY
           
static CopySpace nurserySpace
          The nursery space is where all new objects are allocated by default
 
Fields inherited from class org.mmtk.plan.refcount.RCBase
backupTrace, BT_CLOSURE, CC_BACKUP_TRACE, CC_ENABLED, CC_FORCE_FULL, collection, decPool, modPool, newRootPool, oldRootPool, performCycleCollection, PROCESS_DECBUFFER, PROCESS_MODBUFFER, PROCESS_NEWROOTBUFFER, PROCESS_OLDROOTBUFFER, rcloSpace, rcSpace, REF_COUNT, REF_COUNT_LOS, refCountCollectionPhase, rootClosurePhase, rootTrace
 
Fields inherited from class org.mmtk.plan.StopTheWorld
postSanityPhase, preSanityPhase
 
Fields inherited from class org.mmtk.plan.Simple
CLOSURE, collectionAttempt, COMPLETE, completeClosurePhase, FINALIZABLE, finishPhase, FORWARD, FORWARD_FINALIZABLE, FORWARD_REFS, forwardPhase, INITIATE, initPhase, PHANTOM_REFS, POST_SANITY_PLACEHOLDER, PRE_SANITY_PLACEHOLDER, PRECOPY, PREPARE, PREPARE_STACKS, prepareStacks, refTypeClosurePhase, RELEASE, 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, awaitingAsyncCollection, collectionTrigger, DEFAULT_MAX_NURSERY, DEFAULT_MIN_NURSERY, DEFAULT_POLL_FREQUENCY, DEFAULT_SITE, emergencyCollection, GATHER_WRITE_BARRIER_STATS, GC_PREPARE, GC_PROPER, HEAP_FULL_MINIMUM, HEAP_FULL_PERCENTAGE, IMMORTAL, immortalSpace, insideHarness, LARGE_CODE, largeCodeSpace, LOS, loSpace, MAX_COLLECTION_ATTEMPTS, MAX_NON_LOS_COPY_BYTES, MAX_NON_LOS_DEFAULT_ALLOC_BYTES, MAX_NON_LOS_NONMOVING_ALLOC_BYTES, META, META_DATA_POLL_FREQUENCY, metaDataSpace, NEEDS_LOG_BIT_IN_HEADER, NON_MOVING, NON_PARTICIPANT, nonMovingSpace, NOT_IN_GC, PLOS_FRAC, requiredAtStart, SANITY, sanityChecker, sanitySpace, SCAN_BOOT_IMAGE, SMALL_CODE, smallCodeSpace, stacksPrepared, timeCap, totalTime, USE_CODE_SPACE, 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
GenRC()
           
 
Method Summary
 void collectionPhase(short phaseId)
          Perform a (global) collection phase.
 boolean collectionRequired(boolean spaceFull)
          This method controls the triggering of a GC.
 int getCollectionReserve()
          Return the number of pages reserved for copying.
 int getPagesAvail()
          Return the number of pages available for allocation, assuming all future allocation is to the nursery.
 int getPagesRequired()
          Calculate the number of pages a collection is required to free to satisfy outstanding allocation requests.
 boolean willNeverMove(ObjectReference object)
          Can this object ever move.
 
Methods inherited from class org.mmtk.plan.refcount.RCBase
getPagesUsed, isRCObject, lastCollectionFullHeap, postBoot, registerSpecializedMethods, sanityExpectedRC, sanityLinearScan
 
Methods inherited from class org.mmtk.plan.Simple
replacePhase, replacePlaceholderPhase
 
Methods inherited from class org.mmtk.plan.Plan
availableMemory, boot, bootTimeWriteBarrier, checkForAsyncCollection, collectionComplete, concurrentCollectionRequired, forceFullHeapCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getHeapFullThreshold, getMetaDataPagesUsed, getPagesReserved, getSpecializedScanClass, getTimeCap, getTotalPages, harnessBegin, harnessEnd, insertPhaseAfter, isCollectionTriggered, isCurrentGCNursery, isEmergencyCollection, isInitialized, lastCollectionFailed, lastCollectionWasExhaustive, loadObjectReference, notifyExit, poll, printDetailedTiming, printPostStats, printPreStats, printUsedPages, reservedMemory, setAwaitingAsyncCollection, setCollectionTrigger, setCollectionTriggered, setGCStatus, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, usedMemory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ALLOC_NURSERY

public static final int ALLOC_NURSERY
See Also:
Constant Field Values

ALLOC_RC

public static final int ALLOC_RC
See Also:
Constant Field Values

nurserySpace

public static final CopySpace nurserySpace
The nursery space is where all new objects are allocated by default


NURSERY

public static final int NURSERY
Constructor Detail

GenRC

public GenRC()
Method Detail

collectionPhase

public final void collectionPhase(short phaseId)
Perform a (global) collection phase.

Overrides:
collectionPhase in class RCBase
Parameters:
phaseId - Collection phase

collectionRequired

public final boolean collectionRequired(boolean spaceFull)
This method controls the triggering of a GC. It is called periodically during allocation. Returns true to trigger a collection.

Overrides:
collectionRequired in class Plan
Parameters:
spaceFull - Space request failed, must recover pages within 'space'.
Returns:
True if a collection is requested by the plan.

getPagesAvail

public int getPagesAvail()
Return the number of pages available for allocation, assuming all future allocation is to the nursery.

Overrides:
getPagesAvail in class Plan
Returns:
The number of pages available for allocation, assuming all future allocation is to the nursery.

getCollectionReserve

public final int getCollectionReserve()
Return the number of pages reserved for copying.

Overrides:
getCollectionReserve in class Plan
Returns:
The number of pages reserved given the pending allocation, including space reserved for copying.

getPagesRequired

public int getPagesRequired()
Calculate the number of pages a collection is required to free to satisfy outstanding allocation requests.

Overrides:
getPagesRequired in class Plan
Returns:
the number of pages a collection is required to free to satisfy outstanding allocation requests.

willNeverMove

public boolean willNeverMove(ObjectReference object)
Description copied from class: Plan
Can this object ever move. Used by the VM to make decisions about whether it needs to copy IO buffers etc.

Overrides:
willNeverMove in class Plan
Parameters:
object - Object in question
Returns:
True if the object will never move
See Also:
Plan.willNeverMove(org.vmmagic.unboxed.ObjectReference)