org.mmtk.plan
Class ParallelCollector

java.lang.Object
  extended by org.mmtk.plan.CollectorContext
      extended by org.mmtk.plan.ParallelCollector
All Implemented Interfaces:
Constants
Direct Known Subclasses:
NoGCCollector, SimpleCollector

public abstract class ParallelCollector
extends CollectorContext

TODO: Documentation.


Field Summary
protected  ParallelCollectorGroup group
          The group that this collector context is running in (may be null)
(package private)  int lastTriggerCount
          Last group trigger index (see CollectorContextGroup)
(package private)  int workerOrdinal
          The index of this thread in the collector context group.
 
Fields inherited from class org.mmtk.plan.CollectorContext
log
 
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
ParallelCollector()
           
 
Method Summary
 void collect()
          Perform a single garbage collection
 void collectionPhase(short phaseId, boolean primary)
          Perform a (local, i.e.per-collector) collection phase.
 TraceLocal getCurrentTrace()
           
 int parallelWorkerCount()
          The number of parallel workers currently executing with this collector context.
 int parallelWorkerOrdinal()
          The ordinal of the current worker.
 void park()
          Park this thread into the group, waiting for a request.
 int rendezvous()
          Get the executing context to rendezvous with other contexts working in parallel.
 void run()
          Entry point for the collector context.
 
Methods inherited from class org.mmtk.plan.CollectorContext
allocCopy, copyCheckAllocator, getId, getLog, initCollector, postCopy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

group

protected ParallelCollectorGroup group
The group that this collector context is running in (may be null)


lastTriggerCount

int lastTriggerCount
Last group trigger index (see CollectorContextGroup)


workerOrdinal

int workerOrdinal
The index of this thread in the collector context group.

Constructor Detail

ParallelCollector

public ParallelCollector()
Method Detail

run

public void run()
Entry point for the collector context.

Specified by:
run in class CollectorContext

collect

public void collect()
Perform a single garbage collection


collectionPhase

public void collectionPhase(short phaseId,
                            boolean primary)
Perform a (local, i.e.per-collector) collection phase.

Parameters:
phaseId - The unique phase identifier
primary - Should this thread be used to execute any single-threaded local operations?

getCurrentTrace

public TraceLocal getCurrentTrace()
Returns:
The current trace instance.

park

public final void park()
Park this thread into the group, waiting for a request.


parallelWorkerCount

public int parallelWorkerCount()
Description copied from class: CollectorContext
The number of parallel workers currently executing with this collector context. This can be queried from anywhere within a collector context to determine how best to perform load-balancing.

Overrides:
parallelWorkerCount in class CollectorContext
Returns:
The number of parallel workers.

parallelWorkerOrdinal

public int parallelWorkerOrdinal()
Description copied from class: CollectorContext
The ordinal of the current worker. This is in the range of 0 to the result of parallelWorkerCount() exclusive.

Overrides:
parallelWorkerOrdinal in class CollectorContext
Returns:
The ordinal of this collector context, starting from 0.

rendezvous

public int rendezvous()
Description copied from class: CollectorContext
Get the executing context to rendezvous with other contexts working in parallel.

Overrides:
rendezvous in class CollectorContext
Returns:
The order this context reached the rendezvous, starting from 0.