public class NullCheckCombining extends CompilerPhase
Doing (1) more or less implies either (a) doing (2) or (b) making large changes to the MIR operator set such that all load/stores produce validation results. Although this would be possible, it would not be a trivial change. So, until we have an urgent need to preserve guard operands all the way through the MIR, we'll take the easy way out.
container
Constructor and Description |
---|
NullCheckCombining() |
Modifier and Type | Method and Description |
---|---|
private boolean |
canFold(Instruction s,
Operand activeGuard,
boolean isStore) |
String |
getName() |
private boolean |
isExplicitLoad(Instruction s,
Operator op) |
private boolean |
isExplicitStore(Instruction s,
Operator op) |
CompilerPhase |
newExecution(IR ir)
Return this instance of this phase.
|
void |
perform(IR ir)
Perform nullcheck combining and validation register removal.
|
dumpIR, dumpIR, getClassConstructor, getCompilerPhaseConstructor, getCompilerPhaseConstructor, performPhase, printingEnabled, reportAdditionalStats, setContainer, shouldPerform, verify
public NullCheckCombining()
public CompilerPhase newExecution(IR ir)
newExecution
in class CompilerPhase
ir
- not usedpublic final String getName()
getName
in class CompilerPhase
public void perform(IR ir)
perform
in class CompilerPhase
ir
- the IR to transformprivate boolean isExplicitStore(Instruction s, Operator op)
private boolean isExplicitLoad(Instruction s, Operator op)
private boolean canFold(Instruction s, Operand activeGuard, boolean isStore)