org.mmtk.plan
Class ComplexPhase

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

public final class ComplexPhase
extends Phase
implements Constants

Phases of a garbage collection.

A complex phase is a sequence of phases.


Field Summary
private  int[] scheduledSubPhases
          The phases that comprise this phase.
 
Fields inherited from class org.mmtk.plan.Phase
id, name, SCHEDULE_COLLECTOR, SCHEDULE_COMPLEX, SCHEDULE_CONCURRENT, SCHEDULE_GLOBAL, SCHEDULE_MUTATOR, SCHEDULE_PLACEHOLDER, timer
 
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
protected ComplexPhase(String name, int[] scheduledSubPhases)
          Construct a complex phase from an array of phase IDs.
protected ComplexPhase(String name, Timer timer, int[] scheduledSubPhases)
          Construct a complex phase from an array of phase IDs, but using the specified timer rather than creating one.
 
Method Summary
private  void checkPhases()
          Validate the scheduled sub phases.
protected  int count()
          The number of scheduled sub phases.
protected  int get(int index)
          Return an individual scheduled sub phase.
protected  void logPhase()
          Display a description of this phase, for debugging purposes.
 void replacePhase(int oldScheduledPhase, int newScheduledPhase)
          Replace a scheduled phase.
 
Methods inherited from class org.mmtk.plan.Phase
beginNewPhaseStack, clearConcurrentPhase, concurrentPhaseActive, continuePhaseStack, createComplex, createComplex, createConcurrent, createConcurrent, createSimple, createSimple, getConcurrentPhaseId, getId, getName, getPhase, getPhaseId, getSchedule, getScheduleName, isPhaseStackEmpty, notifyConcurrentPhaseComplete, notifyConcurrentPhaseIncomplete, pushScheduledPhase, resetPhaseStack, scheduleCollector, scheduleComplex, scheduleConcurrent, scheduleGlobal, scheduleMutator, schedulePlaceholder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

scheduledSubPhases

private final int[] scheduledSubPhases
The phases that comprise this phase.

Constructor Detail

ComplexPhase

protected ComplexPhase(String name,
                       int[] scheduledSubPhases)
Construct a complex phase from an array of phase IDs.

Parameters:
name - The name of the phase.
scheduledSubPhases - The sub phases

ComplexPhase

protected ComplexPhase(String name,
                       Timer timer,
                       int[] scheduledSubPhases)
Construct a complex phase from an array of phase IDs, but using the specified timer rather than creating one.

Parameters:
name - The name of the phase.
timer - The timer for this phase to contribute to.
scheduledSubPhases - The sub phases
Method Detail

checkPhases

private void checkPhases()
Validate the scheduled sub phases.


count

protected int count()
The number of scheduled sub phases.


get

protected int get(int index)
Return an individual scheduled sub phase.

Parameters:
index - The index
Returns:
The scheduled phase.

logPhase

protected void logPhase()
Description copied from class: Phase
Display a description of this phase, for debugging purposes.

Specified by:
logPhase in class Phase

replacePhase

public void replacePhase(int oldScheduledPhase,
                         int newScheduledPhase)
Replace a scheduled phase. Used for example to replace a placeholder.

Parameters:
oldScheduledPhase - The scheduled phase to replace.
newScheduledPhase - The new scheduled phase.