public class SSAPhiInstruction extends SSAInstruction
IR
s, these instructions do not appear in the
normal instruction array returned by IR.getInstructions(); instead these
instructions live in ISSABasicBlock
.
getUse(i)
corresponds to the value number from the
ith predecessor of the corresponding ISSABasicBlock
b
in ControlFlowGraph
g
, where predecessor
order is the order of nodes returned by the Iterator
g.getPredNodes(b)
.
Note: if getUse(i) returns AbstractIntStackMachine
.TOP (that is, -1),
then that use represents an edge in the CFG which is infeasible in verifiable
bytecode.SSAInstruction.IVisitor, SSAInstruction.Visitor
iindex, NO_INDEX
Constructor and Description |
---|
SSAPhiInstruction(int iindex,
int result,
int[] params) |
Modifier and Type | Method and Description |
---|---|
SSAInstruction |
copyForSSA(SSAInstructionFactory insts,
int[] defs,
int[] uses)
This method is meant to be used during SSA conversion for an IR that is not in SSA form.
|
int |
getDef() |
int |
getDef(int i)
Return the ith def
|
int |
getNumberOfDefs() |
int |
getNumberOfUses() |
int |
getUse(int j) |
protected String |
getValueString(SymbolTable symbolTable,
int valueNumber) |
boolean |
hasDef()
Does this instruction define a normal value, as distinct from a set of exceptions possibly thrown by it (e.g.
|
int |
hashCode() |
boolean |
isFallThrough() |
void |
setValues(int[] i)
Clients should not call this.
|
String |
toString(SymbolTable symbolTable) |
void |
visit(SSAInstruction.IVisitor v)
Apply an IVisitor to this instruction.
|
equals, getExceptionTypes, isPEI, toString
public SSAPhiInstruction(int iindex, int result, int[] params) throws IllegalArgumentException
IllegalArgumentException
public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) throws IllegalArgumentException
SSAInstruction
copyForSSA
in class SSAInstruction
IllegalArgumentException
public String toString(SymbolTable symbolTable)
toString
in class SSAInstruction
public void visit(SSAInstruction.IVisitor v)
SSAInstruction
visit
in class SSAInstruction
IllegalArgumentException
- if v is nullSSAInstruction.visit(IVisitor)
public boolean hasDef()
SSAInstruction
hasDef
in class SSAInstruction
SSAInstruction.getDef()
public int getDef()
getDef
in class SSAInstruction
public int getDef(int i)
SSAInstruction
getDef
in class SSAInstruction
i
- number of the def, starting at 0.public int getNumberOfUses()
getNumberOfUses
in class SSAInstruction
SSAInstruction.getNumberOfUses()
public int getNumberOfDefs()
getNumberOfDefs
in class SSAInstruction
public int getUse(int j) throws IllegalArgumentException
getUse
in class SSAInstruction
IllegalArgumentException
SSAInstruction.getUse(int)
public void setValues(int[] i)
protected String getValueString(SymbolTable symbolTable, int valueNumber)
getValueString
in class SSAInstruction
com.ibm.wala.ssa.SSAInstruction#getValueString(SymbolTable, ValueDecorator, int)
public int hashCode()
hashCode
in class SSAInstruction
public boolean isFallThrough()
isFallThrough
in class SSAInstruction