public abstract class AbstractSSAConversion
extends java.lang.Object
This implementation is abstract in the sense that it is designed to work over the instructions and CFG of a Domo IR, but it is abstract with respect to several integral portions of the traditional algorithm:
| Modifier and Type | Field and Description |
|---|---|
protected int[] |
C |
protected com.ibm.wala.ssa.SSACFG |
CFG |
protected com.ibm.wala.ssa.SSAOptions.DefaultValues |
defaultValues |
protected com.ibm.wala.util.graph.dominators.DominanceFrontiers<com.ibm.wala.ssa.ISSABasicBlock> |
DF |
protected com.ibm.wala.ssa.SSAInstruction[] |
instructions |
protected int[] |
phiCounts |
protected com.ibm.wala.util.collections.IntStack[] |
S |
protected com.ibm.wala.ssa.SymbolTable |
symbolTable |
protected int[] |
valueMap |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractSSAConversion(com.ibm.wala.ssa.IR ir,
com.ibm.wala.ssa.SSAOptions options) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
fail(int v) |
protected abstract int |
getDef(com.ibm.wala.ssa.SSAInstruction inst,
int index) |
protected int |
getDefaultValue(int valueNumber) |
protected com.ibm.wala.ssa.SSAInstruction[] |
getInstructions(com.ibm.wala.ssa.IR ir) |
protected abstract int |
getMaxValueNumber() |
protected abstract int |
getNextNewValueNumber() |
protected abstract int |
getNumberOfDefs(com.ibm.wala.ssa.SSAInstruction inst) |
protected abstract int |
getNumberOfUses(com.ibm.wala.ssa.SSAInstruction inst) |
protected abstract com.ibm.wala.ssa.SSAPhiInstruction |
getPhi(com.ibm.wala.ssa.SSACFG.BasicBlock B,
int index) |
protected abstract int |
getUse(com.ibm.wala.ssa.SSAInstruction inst,
int index) |
protected boolean |
hasDefaultValue(int valueNumber) |
protected void |
init() |
protected abstract void |
initializeVariables() |
protected abstract boolean |
isAssignInstruction(com.ibm.wala.ssa.SSAInstruction inst) |
protected abstract boolean |
isConstant(int valueNumber) |
protected abstract boolean |
isLive(com.ibm.wala.ssa.SSACFG.BasicBlock Y,
int V) |
protected java.util.Iterator<com.ibm.wala.ssa.SSAInstruction> |
iterateInstructions(com.ibm.wala.ssa.IR ir) |
protected void |
perform() |
protected abstract void |
placeNewPhiAt(int value,
com.ibm.wala.ssa.SSACFG.BasicBlock Y) |
protected void |
placePhiNodes() |
protected abstract void |
popAssignment(com.ibm.wala.ssa.SSAInstruction inst,
int index) |
protected abstract void |
pushAssignment(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int newRhs) |
protected abstract void |
repairExit() |
protected abstract void |
repairInstructionDefs(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int[] newDefs,
int[] newUses) |
protected abstract void |
repairInstructionUses(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int[] newUses) |
protected abstract com.ibm.wala.ssa.SSAPhiInstruction |
repairPhiDefs(com.ibm.wala.ssa.SSAPhiInstruction phi,
int[] newDefs) |
protected abstract void |
repairPhiUse(com.ibm.wala.ssa.SSACFG.BasicBlock BB,
int phiIndex,
int rvalIndex,
int newRval) |
protected abstract void |
setPhi(com.ibm.wala.ssa.SSACFG.BasicBlock B,
int index,
com.ibm.wala.ssa.SSAPhiInstruction inst) |
protected abstract boolean |
skip(int vn) |
protected boolean |
skipRepair(com.ibm.wala.ssa.SSAInstruction inst,
int index) |
protected int |
top(int v) |
protected final com.ibm.wala.ssa.SSACFG CFG
protected final com.ibm.wala.util.graph.dominators.DominanceFrontiers<com.ibm.wala.ssa.ISSABasicBlock> DF
protected final int[] phiCounts
protected final com.ibm.wala.ssa.SSAInstruction[] instructions
protected final com.ibm.wala.ssa.SymbolTable symbolTable
protected final com.ibm.wala.ssa.SSAOptions.DefaultValues defaultValues
protected com.ibm.wala.util.collections.IntStack[] S
protected int[] C
protected int[] valueMap
protected AbstractSSAConversion(com.ibm.wala.ssa.IR ir,
com.ibm.wala.ssa.SSAOptions options)
protected abstract int getNumberOfDefs(com.ibm.wala.ssa.SSAInstruction inst)
protected abstract int getDef(com.ibm.wala.ssa.SSAInstruction inst,
int index)
protected abstract int getNumberOfUses(com.ibm.wala.ssa.SSAInstruction inst)
protected abstract int getUse(com.ibm.wala.ssa.SSAInstruction inst,
int index)
protected abstract boolean isAssignInstruction(com.ibm.wala.ssa.SSAInstruction inst)
protected abstract int getMaxValueNumber()
protected abstract boolean isLive(com.ibm.wala.ssa.SSACFG.BasicBlock Y,
int V)
protected abstract boolean skip(int vn)
protected abstract boolean isConstant(int valueNumber)
protected abstract int getNextNewValueNumber()
protected abstract void initializeVariables()
protected abstract void repairExit()
protected abstract void placeNewPhiAt(int value,
com.ibm.wala.ssa.SSACFG.BasicBlock Y)
protected abstract com.ibm.wala.ssa.SSAPhiInstruction getPhi(com.ibm.wala.ssa.SSACFG.BasicBlock B,
int index)
protected abstract void setPhi(com.ibm.wala.ssa.SSACFG.BasicBlock B,
int index,
com.ibm.wala.ssa.SSAPhiInstruction inst)
protected abstract com.ibm.wala.ssa.SSAPhiInstruction repairPhiDefs(com.ibm.wala.ssa.SSAPhiInstruction phi,
int[] newDefs)
protected abstract void repairPhiUse(com.ibm.wala.ssa.SSACFG.BasicBlock BB,
int phiIndex,
int rvalIndex,
int newRval)
protected abstract void repairInstructionUses(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int[] newUses)
protected abstract void repairInstructionDefs(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int[] newDefs,
int[] newUses)
protected abstract void pushAssignment(com.ibm.wala.ssa.SSAInstruction inst,
int index,
int newRhs)
protected abstract void popAssignment(com.ibm.wala.ssa.SSAInstruction inst,
int index)
protected void perform()
protected com.ibm.wala.ssa.SSAInstruction[] getInstructions(com.ibm.wala.ssa.IR ir)
protected final java.util.Iterator<com.ibm.wala.ssa.SSAInstruction> iterateInstructions(com.ibm.wala.ssa.IR ir)
protected void init()
protected void placePhiNodes()
protected boolean skipRepair(com.ibm.wala.ssa.SSAInstruction inst,
int index)
protected void fail(int v)
protected boolean hasDefaultValue(int valueNumber)
protected int getDefaultValue(int valueNumber)
protected int top(int v)