public final class IntervalAnalysis extends CompilerPhase
| Modifier and Type | Field and Description | 
|---|---|
| private static Constructor<CompilerPhase> | constructorConstructor for this compiler phase | 
| private IR | irthe governing ir | 
| private BasicBlock | listOfBlocksa list of basic blocks in topological order | 
| private static boolean | MUTATE_FMOVMark FMOVs that end a live range? | 
| private RegisterAllocatorState | regAllocState | 
| private BasicBlock | reverseTopFirsta reverse topological list of basic blocks | 
container| Constructor and Description | 
|---|
| IntervalAnalysis() | 
| Modifier and Type | Method and Description | 
|---|---|
| (package private) void | assignDepthFirstNumbers(ControlFlowGraph cfg)this method processes all basic blocks, do the following to each block
   1) add it to the begining of the "listOfBlocks" list
   2) number the instructions
   3) process the instructions that restrict physical register
   assignment | 
| private void | createTopAndReverseList(ControlFlowGraph cfg)create topological list and a reverse topological list
  the results are on listOfBlocks and reverseTopFirst lists | 
| Constructor<CompilerPhase> | getClassConstructor()Get a constructor object for this compiler phase | 
| String | getName()a name for this phase. | 
| private void | initializeRegisters()Initialize the interval for each register to null. | 
| private boolean | mutateFMOVs(LiveIntervalElement live,
           Register register,
           int dfnbegin,
           int dfnend)Mutate FMOVs that end live ranges | 
| void | perform(IR ir)compute live intervals for this ir
 the result is a sorted (by beginning point) set of compound
 intervals, stored in the private 'intervals' field. | 
| boolean | printingEnabled(OptOptions options,
               boolean before)should we print the ir? | 
| private CompoundInterval | processLiveInterval(LiveIntervalElement live,
                   BasicBlock bb)for each live interval associated with this block
 we either add a new interval, or extend a previous interval
 if it is contiguous | 
| boolean | shouldPerform(OptOptions options)should we perform this phase? | 
dumpIR, dumpIR, getCompilerPhaseConstructor, getCompilerPhaseConstructor, newExecution, performPhase, reportAdditionalStats, setContainer, verifyprivate RegisterAllocatorState regAllocState
private BasicBlock listOfBlocks
private BasicBlock reverseTopFirst
private static final boolean MUTATE_FMOV
private static final Constructor<CompilerPhase> constructor
public IntervalAnalysis()
public Constructor<CompilerPhase> getClassConstructor()
getClassConstructor in class CompilerPhasepublic boolean shouldPerform(OptOptions options)
shouldPerform in class CompilerPhaseoptions - the compiler options for the compilationpublic String getName()
getName in class CompilerPhasepublic boolean printingEnabled(OptOptions options, boolean before)
printingEnabled in class CompilerPhaseoptions - the compiler options for the compilationbefore - true when invoked before perform, false otherwise.public void perform(IR ir)
perform in class CompilerPhaseir - the irprivate void createTopAndReverseList(ControlFlowGraph cfg)
cfg - the control flow graphvoid assignDepthFirstNumbers(ControlFlowGraph cfg)
cfg - the control flow graphprivate void initializeRegisters()
private boolean mutateFMOVs(LiveIntervalElement live, Register register, int dfnbegin, int dfnend)
live - The live interval for a basic block/reg pairregister - The register for this live intervaldfnbegin - The (adjusted) begin for this intervaldfnend - The (adjusted) end for this intervalprivate CompoundInterval processLiveInterval(LiveIntervalElement live, BasicBlock bb)
live - the liveintervalelement for a basic block/reg pairbb - the basic block