public final class GCP extends OptimizationPlanCompositeElement
LICM is applied to HIR and LIR, GCSE only to LIR and before LICM.
Both algorithms run on SSA and use the dominator tree to determine positions for operations. That's why these operations are called code placement instead of code motion.
There is no code yet to deal with partial redundancies.
Modifier and Type | Class and Description |
---|---|
private static class |
GCP.GCPFinalization
This class sets up the IR state prior to entering SSA for GCP
|
private static class |
GCP.GCPPreparation
This class sets up the IR state prior to entering SSA for GCP
|
Constructor and Description |
---|
GCP()
Makes sure we are in SSA and have global value numbers at hand.
|
Modifier and Type | Method and Description |
---|---|
boolean |
shouldPerform(OptOptions options)
Redefine shouldPerform so that none of the subphases will occur
unless we pass through this test.
|
(package private) static boolean |
tooBig(IR ir) |
static boolean |
usesOrDefsPhysicalRegisterOrAddressType(Instruction inst) |
compose, elapsedTime, getName, initializeForMeasureCompilation, perform, printingEnabled, reportStats
prettyPrintTime
public GCP()
public boolean shouldPerform(OptOptions options)
shouldPerform
in class OptimizationPlanCompositeElement
options
- The Options object for the current compilation.true
if the plan element should be performed.public static boolean usesOrDefsPhysicalRegisterOrAddressType(Instruction inst)