org.jikesrvm.mm.mmtk
Class Collection

java.lang.Object
  extended by org.mmtk.vm.Collection
      extended by org.jikesrvm.mm.mmtk.Collection
All Implemented Interfaces:
Constants, HeapLayoutConstants, ThinLockConstants, TIBLayoutConstants, SizeConstants

public class Collection
extends Collection
implements Constants, Constants


Field Summary
private static RVMThread.SoftHandshakeVisitor mutatorFlushVisitor
           
 
Fields inherited from class org.mmtk.vm.Collection
EXTERNAL_GC_TRIGGER, INTERNAL_GC_TRIGGER, INTERNAL_PHASE_GC_TRIGGER, RESOURCE_GC_TRIGGER, TRIGGER_REASONS, triggerReasons, UNKNOWN_GC_TRIGGER
 
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
 
Fields inherited from interface org.jikesrvm.Constants
NOT_REACHED, REFLECTION_FPRS_BITS, REFLECTION_FPRS_MASK, REFLECTION_GPRS_BITS, REFLECTION_GPRS_MASK
 
Fields inherited from interface org.jikesrvm.objectmodel.ThinLockConstants
TL_DEDICATED_U16_OFFSET, TL_DEDICATED_U16_SHIFT, TL_LOCK_COUNT_MASK, TL_LOCK_COUNT_SHIFT, TL_LOCK_COUNT_UNIT, TL_LOCK_ID_MASK, TL_LOCK_ID_SHIFT, TL_NUM_BITS_RC, TL_NUM_BITS_STAT, TL_NUM_BITS_TID, TL_STAT_BIASABLE, TL_STAT_FAT, TL_STAT_MASK, TL_STAT_SHIFT, TL_STAT_THIN, TL_THREAD_ID_MASK, TL_THREAD_ID_SHIFT, TL_UNLOCK_MASK
 
Fields inherited from interface org.jikesrvm.SizeConstants
BITS_IN_BOOLEAN, BITS_IN_DOUBLE, BITS_IN_EXTENT, BITS_IN_FLOAT, BITS_IN_LONG, BITS_IN_OFFSET, BYTES_IN_BOOLEAN, BYTES_IN_DOUBLE, BYTES_IN_EXTENT, BYTES_IN_FLOAT, BYTES_IN_LONG, BYTES_IN_OFFSET, LOG_BITS_IN_BOOLEAN, LOG_BITS_IN_DOUBLE, LOG_BITS_IN_EXTENT, LOG_BITS_IN_FLOAT, LOG_BITS_IN_LONG, LOG_BITS_IN_OFFSET, LOG_BYTES_IN_BOOLEAN, LOG_BYTES_IN_DOUBLE, LOG_BYTES_IN_EXTENT, LOG_BYTES_IN_FLOAT, LOG_BYTES_IN_LONG, LOG_BYTES_IN_OFFSET
 
Fields inherited from interface org.jikesrvm.objectmodel.TIBLayoutConstants
IMT_METHOD_SLOTS, NEEDS_DYNAMIC_LINK, TIB_ARRAY_ELEMENT_TIB_INDEX, TIB_DOES_IMPLEMENT_INDEX, TIB_FIRST_SPECIALIZED_METHOD_INDEX, TIB_FIRST_VIRTUAL_METHOD_INDEX, TIB_INTERFACE_DISPATCH_TABLE_INDEX, TIB_SUPERCLASS_IDS_INDEX, TIB_TYPE_INDEX
 
Fields inherited from interface org.jikesrvm.HeapLayoutConstants
BAD_MAP_COMPRESSION, BOOT_IMAGE_CODE_END, BOOT_IMAGE_CODE_SIZE, BOOT_IMAGE_CODE_START, BOOT_IMAGE_DATA_END, BOOT_IMAGE_DATA_SIZE, BOOT_IMAGE_DATA_START, BOOT_IMAGE_END, BOOT_IMAGE_RMAP_END, BOOT_IMAGE_RMAP_START, MAX_BOOT_IMAGE_RMAP_SIZE, MAXIMUM_MAPPABLE
 
Constructor Summary
Collection()
           
 
Method Summary
 void blockForGC()
          Block for the garbage collector.
 int getActiveThreads()
           
 int getDefaultThreads()
           
 void outOfMemory()
          Fail with an out of memory error.
 void prepareMutator(MutatorContext m)
          Prepare a mutator for collection.
 void requestMutatorFlush()
          Request each mutator flush remembered sets.
 void resumeAllMutators()
          Resume all mutators blocked for GC.
static void scheduleFinalizerThread()
          Schedule the finalizerThread, if there are objects to be finalized and the finalizerThread is on its queue (ie. currently idle).
 void spawnCollectorContext(CollectorContext context)
          Spawn a thread to execute the supplied collector context.
 void stopAllMutators()
          Stop all mutator threads.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mutatorFlushVisitor

private static RVMThread.SoftHandshakeVisitor mutatorFlushVisitor
Constructor Detail

Collection

public Collection()
Method Detail

spawnCollectorContext

public void spawnCollectorContext(CollectorContext context)
Spawn a thread to execute the supplied collector context.

Specified by:
spawnCollectorContext in class Collection

getDefaultThreads

public int getDefaultThreads()
Specified by:
getDefaultThreads in class Collection
Returns:
The default number of collector threads to use.

getActiveThreads

public int getActiveThreads()
Specified by:
getActiveThreads in class Collection
Returns:
The number of active threads.

blockForGC

public void blockForGC()
Description copied from class: Collection
Block for the garbage collector.

Specified by:
blockForGC in class Collection

outOfMemory

public void outOfMemory()
Fail with an out of memory error.

Specified by:
outOfMemory in class Collection

prepareMutator

public final void prepareMutator(MutatorContext m)
Description copied from class: Collection
Prepare a mutator for collection.

Specified by:
prepareMutator in class Collection
Parameters:
m - the mutator to prepare

stopAllMutators

public void stopAllMutators()
Description copied from class: Collection
Stop all mutator threads. This is current intended to be run by a single thread.

Fixpoint until there are no threads that we haven't blocked. Fixpoint is needed to catch the (unlikely) case that a thread spawns another thread while we are waiting.

Specified by:
stopAllMutators in class Collection

resumeAllMutators

public void resumeAllMutators()
Description copied from class: Collection
Resume all mutators blocked for GC.

Specified by:
resumeAllMutators in class Collection

requestMutatorFlush

public void requestMutatorFlush()
Description copied from class: Collection
Request each mutator flush remembered sets. This method will trigger the flush and then yield until all processors have flushed.

Specified by:
requestMutatorFlush in class Collection

scheduleFinalizerThread

public static void scheduleFinalizerThread()
Schedule the finalizerThread, if there are objects to be finalized and the finalizerThread is on its queue (ie. currently idle). Should be called at the end of GC after moveToFinalizable has been called, and before mutators are allowed to run.