org.mmtk.plan
Class ParallelCollectorGroup

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

public class ParallelCollectorGroup
extends Object
implements Constants

This class represents a pool of collector contexts that can be triggered to perform collection activity.


Field Summary
private  boolean aborted
          Is there an abort request outstanding?
private  ParallelCollector[] contexts
          The collector context instances operating within this group
private  int contextsParked
          The number of threads that are currently parked
private  int currentRendezvousCounter
          Which rendezvous counter is currently in use
private  Monitor lock
          Lock used to manage group state.
private  String name
          The name of this collector context group.
private  int[] rendezvousCounter
          Used to count threads during calls to rendezvous()
private  int triggerCount
          The number of cycles triggered
 
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
ParallelCollectorGroup(String name)
          Initialization
 
Method Summary
 void abortCycle()
          Signal that you would like the threads to park abruptly.
 int activeWorkerCount()
           
 void initGroup(int size, Class<? extends ParallelCollector> klass)
          Initialize the collector context group.
 boolean isAborted()
          Has the cycle been aborted?
 boolean isMember(CollectorContext context)
          Is the given context and member of this group.
 void park(ParallelCollector context)
          Park the given collector in the group.
 int rendezvous()
          Rendezvous with other active threads in this group.
 void triggerCycle()
          Wake up the parked threads in this group.
 void waitForCycle()
          Wait until the group is idle.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

private final String name
The name of this collector context group.


contexts

private ParallelCollector[] contexts
The collector context instances operating within this group


lock

private Monitor lock
Lock used to manage group state.


triggerCount

private volatile int triggerCount
The number of cycles triggered


contextsParked

private volatile int contextsParked
The number of threads that are currently parked


aborted

private volatile boolean aborted
Is there an abort request outstanding?


rendezvousCounter

private int[] rendezvousCounter
Used to count threads during calls to rendezvous()


currentRendezvousCounter

private volatile int currentRendezvousCounter
Which rendezvous counter is currently in use

Constructor Detail

ParallelCollectorGroup

public ParallelCollectorGroup(String name)
Initialization

Method Detail

activeWorkerCount

public int activeWorkerCount()
Returns:
The number of active collector contexts.

initGroup

public void initGroup(int size,
                      Class<? extends ParallelCollector> klass)
Initialize the collector context group.

Parameters:
size - The number of collector contexts within the group.
klass - The type of collector context to create.

triggerCycle

public void triggerCycle()
Wake up the parked threads in this group.


abortCycle

public void abortCycle()
Signal that you would like the threads to park abruptly. Has no effect if no cycle is active.


isAborted

public boolean isAborted()
Has the cycle been aborted?


waitForCycle

public void waitForCycle()
Wait until the group is idle.


park

public void park(ParallelCollector context)
Park the given collector in the group. The given context must be a member of this group.

Parameters:
context - The context to park.

isMember

public boolean isMember(CollectorContext context)
Is the given context and member of this group.

Parameters:
context - The context to pass.
Returns:
true if the context is a member.

rendezvous

public int rendezvous()
Rendezvous with other active threads in this group.

Returns:
The order in which you entered the rendezvous.