org.jikesrvm.adaptive.recompilation.instrumentation
Class InsertInstructionCounters

java.lang.Object
  extended by org.jikesrvm.compilers.opt.driver.CompilerPhase
      extended by org.jikesrvm.adaptive.recompilation.instrumentation.InsertInstructionCounters

public class InsertInstructionCounters
extends CompilerPhase

The following OPT phase inserts counters on all instructions in the IR. It maintains one counter for each operand type, so it output how many loads were executed, how many int_add's etc. This is useful for debugging and assessing the accuracy of optimizations.

Note: The counters are added at the end of HIR, so the counts will NOT reflect any changes to the code that occur after HIR.


Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
container
 
Constructor Summary
InsertInstructionCounters()
           
 
Method Summary
 String getName()
           
 CompilerPhase newExecution(IR ir)
          Return this instance of this phase.
 void perform(IR ir)
          Insert a counter on every instruction, and group counts by opcode type.
 boolean shouldPerform(OptOptions options)
          This method determines if the phase should be run, based on the Options object it is passed.
 
Methods inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
dumpIR, dumpIR, getClassConstructor, getCompilerPhaseConstructor, getCompilerPhaseConstructor, performPhase, printingEnabled, reportAdditionalStats, setContainer, verify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InsertInstructionCounters

public InsertInstructionCounters()
Method Detail

newExecution

public CompilerPhase newExecution(IR ir)
Return this instance of this phase. This phase contains no per-compilation instance fields.

Overrides:
newExecution in class CompilerPhase
Parameters:
ir - not used
Returns:
this

shouldPerform

public final boolean shouldPerform(OptOptions options)
Description copied from class: CompilerPhase
This method determines if the phase should be run, based on the Options object it is passed. By default, phases are always performed. Subclasses should override this method if they only want to be performed conditionally.

Overrides:
shouldPerform in class CompilerPhase
Parameters:
options - the compiler options for the compilation
Returns:
true if the phase should be performed

getName

public final String getName()
Specified by:
getName in class CompilerPhase
Returns:
a String which is the name of the phase.

perform

public final void perform(IR ir)
Insert a counter on every instruction, and group counts by opcode type.

Specified by:
perform in class CompilerPhase
Parameters:
ir - the governing IR