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, BUILD_FOR_GENRC, CC_BACKUP_TRACE, CC_ENABLED, ccForceFull, decPool, genRCCollection, genRCCollectionPhase, genRCRootClosurePhase, modPool, newRootPool, oldRootPool, performCycleCollection, PROCESS_DECBUFFER, PROCESS_MODBUFFER, PROCESS_NEWROOTBUFFER, PROCESS_OLDROOTBUFFER, rcloSpace, rcSpace, REF_COUNT, REF_COUNT_LOS, refCountCollection, refCountCollectionPhase, refCountRootClosurePhase, rootTrace
 
Fields inherited from class org.mmtk.plan.StopTheWorld
postSanityPhase, preSanityPhase
 
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
GenRC()
           
 
Method Summary
 void collectionPhase(short phaseId)
          Perform a (global) collection phase.
 boolean collectionRequired(boolean spaceFull, Space space)
          This method controls the triggering of a GC.
 void fullyBooted()
           
 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.
 boolean willNeverMove(ObjectReference object)
          Can this object ever move.
 
Methods inherited from class org.mmtk.plan.refcount.RCBase
getPagesUsed, isRCObject, lastCollectionFullHeap, processOptions, registerSpecializedMethods, sanityExpectedRC, sanityLinearScan
 
Methods inherited from class org.mmtk.plan.Simple
replacePhase, replacePlaceholderPhase, switchNurseryZeroingApproach
 
Methods inherited from class org.mmtk.plan.Plan
availableMemory, bootTimeWriteBarrier, concurrentCollectionRequired, enableAllocation, enableCollection, forceFullHeapCollection, freeMemory, gcInProgress, gcInProgressProper, getAllocationSite, getPagesReserved, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isCurrentGCNursery, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, lastCollectionWasExhaustive, loadObjectReference, logPoll, notifyExit, poll, printDetailedTiming, printPostStats, printPreStats, printUsedPages, reservedMemory, resetCollectionTrigger, setGCStatus, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, 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 - The unique id of the phase to perform.

collectionRequired

public final boolean collectionRequired(boolean spaceFull,
                                        Space space)
Description copied from class: Plan
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'.
space - TODO
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 collection.

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 - The object in question
Returns:
true if it is not possible that the object will ever move.

fullyBooted

public void fullyBooted()
Overrides:
fullyBooted in class Plan