org.mmtk.plan
Class ControllerCollectorContext

java.lang.Object
  extended by org.mmtk.plan.CollectorContext
      extended by org.mmtk.plan.ControllerCollectorContext
All Implemented Interfaces:
Constants

public class ControllerCollectorContext
extends CollectorContext


Field Summary
private  boolean concurrentCollection
          Is there concurrent collection activity
private  int lastRequestCount
          The request index that was last completed
private  Monitor lock
          The lock to use to manage collection
private  int requestCount
          The current request index
private  boolean requestFlag
          Flag used to control the 'race to request'
private  ParallelCollectorGroup workers
          The set of worker threads to use
 
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
ControllerCollectorContext(ParallelCollectorGroup workers)
          Create a controller context.
 
Method Summary
private  void clearRequest()
          Clear the collection request, making future requests incur an additional collection cycle.
 void initCollector(int id)
          Notify that the collector context is registered and ready to execute.
 void request()
          Request a collection.
 void requestConcurrentCollection()
          Request that concurrent collection is performed after this stop-the-world increment.
 void run()
          Main execution loop.
private  void waitForRequest()
          Wait until a request is received.
 
Methods inherited from class org.mmtk.plan.CollectorContext
allocCopy, copyCheckAllocator, getId, getLog, parallelWorkerCount, parallelWorkerOrdinal, postCopy, rendezvous
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lock

private Monitor lock
The lock to use to manage collection


workers

private ParallelCollectorGroup workers
The set of worker threads to use


requestFlag

private boolean requestFlag
Flag used to control the 'race to request'


requestCount

private int requestCount
The current request index


lastRequestCount

private int lastRequestCount
The request index that was last completed


concurrentCollection

private boolean concurrentCollection
Is there concurrent collection activity

Constructor Detail

ControllerCollectorContext

public ControllerCollectorContext(ParallelCollectorGroup workers)
Create a controller context.

Parameters:
workers - The worker group to use for collection.
Method Detail

initCollector

public void initCollector(int id)
Description copied from class: CollectorContext
Notify that the collector context is registered and ready to execute.

Overrides:
initCollector in class CollectorContext
Parameters:
id - The id of this collector context.

run

public void run()
Main execution loop.

Specified by:
run in class CollectorContext

requestConcurrentCollection

public void requestConcurrentCollection()
Request that concurrent collection is performed after this stop-the-world increment.


request

public void request()
Request a collection.


clearRequest

private void clearRequest()
Clear the collection request, making future requests incur an additional collection cycle.


waitForRequest

private void waitForRequest()
Wait until a request is received.