|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.jikesrvm.compilers.opt.driver.OptimizationPlanElement
org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement
org.jikesrvm.compilers.opt.regalloc.LinearScan
public final class LinearScan
Main driver for linear scan register allocation.
| Nested Class Summary | |
|---|---|
(package private) static class |
LinearScan.ActiveSet
"Active set" for linear scan register allocation. |
(package private) static class |
LinearScan.BasicInterval
Implements a basic live interval (no holes), which is a pair begin - the starting point of the interval end - the ending point of the interval Begin and end are numbers given to each instruction by a numbering pass |
(package private) static class |
LinearScan.CompoundInterval
Implements a live interval with holes; ie; a list of basic live intervals. |
(package private) static class |
LinearScan.IncreasingEndMappedIntervalSet
Implements a set of Basic Intervals, sorted by end number. |
(package private) static class |
LinearScan.IncreasingStartIntervalSet
Implements a set of Basic Intervals, sorted by start number. |
(package private) static class |
LinearScan.IncreasingStartMappedIntervalSet
Implements a set of Basic Intervals, sorted by start number. |
static class |
LinearScan.IntervalAnalysis
phase to compute linear scan intervals. |
(package private) static class |
LinearScan.IntervalSet
|
static class |
LinearScan.LinearScanPhase
|
static class |
LinearScan.LinearScanState
|
(package private) static class |
LinearScan.MappedBasicInterval
A basic interval contained in a CompoundInterval. |
(package private) static class |
LinearScan.RegisterRestrictionsPhase
A phase to compute register restrictions. |
(package private) static class |
LinearScan.SpillCode
Insert Spill Code after register assignment. |
(package private) static class |
LinearScan.SpillLocationInterval
The following represents the intervals assigned to a particular spill location |
(package private) static class |
LinearScan.SpillLocationManager
The following class manages allocation and reuse of spill locations. |
(package private) static class |
LinearScan.UpdateGCMaps1
Update GC maps after register allocation but before inserting spill code. |
(package private) static class |
LinearScan.UpdateGCMaps2
Update GC Maps again, to account for changes induced by spill code. |
static class |
LinearScan.UpdateOSRMaps
Update GC maps after register allocation but before inserting spill code. |
| Field Summary | |
|---|---|
private static boolean |
DEBUG
debug flags |
private static boolean |
DEBUG_COALESCE
|
private static boolean |
GC_DEBUG
|
private static boolean |
MUTATE_FMOV
Mark FMOVs that end a live range? |
private static boolean |
VERBOSE_DEBUG
|
| Constructor Summary | |
|---|---|
LinearScan()
Build this phase as a composite of others. |
|
| Method Summary | |
|---|---|
(package private) static int |
getDFN(Instruction inst)
returns the dfn associated with the passed instruction |
(package private) static int |
getDfnBegin(LiveIntervalElement live,
BasicBlock bb)
Return the Depth-first-number of the beginning of the live interval. |
(package private) static int |
getDfnEnd(LiveIntervalElement live,
BasicBlock bb)
Return the Depth-first-number of the end of the live interval. |
(package private) static LinearScan.CompoundInterval |
getInterval(Register reg)
Returns the interval associated with the passed register. |
String |
getName()
|
(package private) static void |
printDfns(IR ir)
Print the DFN numbers associated with each instruction |
boolean |
printingEnabled(OptOptions options,
boolean before)
Returns true if the phase wants the IR dumped before and/or after it runs. |
(package private) static void |
setDFN(Instruction inst,
int dfn)
Associates the passed dfn number with the instruction |
(package private) static void |
setInterval(Register reg,
LinearScan.CompoundInterval interval)
Associates the passed live interval with the passed register, using the scratchObject field of Register. |
boolean |
shouldPerform(OptOptions options)
Register allocation is required |
| Methods inherited from class org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement |
|---|
compose, elapsedTime, initializeForMeasureCompilation, perform, reportStats |
| Methods inherited from class org.jikesrvm.compilers.opt.driver.OptimizationPlanElement |
|---|
prettyPrintTime |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private static final boolean MUTATE_FMOV
private static final boolean DEBUG
private static final boolean VERBOSE_DEBUG
private static final boolean GC_DEBUG
private static final boolean DEBUG_COALESCE
| Constructor Detail |
|---|
LinearScan()
| Method Detail |
|---|
public boolean shouldPerform(OptOptions options)
shouldPerform in class OptimizationPlanCompositeElementoptions - The Options object for the current compilation.
public String getName()
getName in class OptimizationPlanCompositeElement
public boolean printingEnabled(OptOptions options,
boolean before)
OptimizationPlanCompositeElement
printingEnabled in class OptimizationPlanCompositeElementoptions - the compiler options for the compilationbefore - true when invoked before perform, false otherwise.
static void setInterval(Register reg,
LinearScan.CompoundInterval interval)
reg - the registerinterval - the live intervalstatic LinearScan.CompoundInterval getInterval(Register reg)
reg - the register
static int getDFN(Instruction inst)
inst - the instruction
static void setDFN(Instruction inst,
int dfn)
inst - the instructiondfn - the dfn numberstatic void printDfns(IR ir)
static int getDfnEnd(LiveIntervalElement live,
BasicBlock bb)
static int getDfnBegin(LiveIntervalElement live,
BasicBlock bb)
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||