public class SSABuilder extends AbstractIntStackMachine
IR
from a backing ShrikeBT instruction stream.
The basic algorithm here is an abstract interpretation over the Java bytecode to determine types of stack locations and local
variables. As a side effect, the flow functions of the abstract interpretation emit instructions, eliminating the stack
abstraction and moving to a register-transfer language in SSA form.AbstractIntStackMachine.BasicStackFlowProvider, AbstractIntStackMachine.FlowProvider, AbstractIntStackMachine.MachineState, AbstractIntStackMachine.Meeter
BOTTOM, IGNORE, OPTIMISTIC, TOP, UNANALYZED
CHANGED, CHANGED_AND_FIXED, CHANGED_MASK, FIXED_MASK, NOT_CHANGED, NOT_CHANGED_AND_FIXED, SIDE_EFFECT_MASK
Modifier and Type | Method and Description |
---|---|
void |
build()
Build the IR
|
ShrikeIndirectionData |
getIndirectionData() |
com.ibm.wala.ssa.SSABuilder.SSA2LocalMap |
getLocalMap() |
protected void |
initializeVariables()
Convenience method ...
|
static SSABuilder |
make(IBytecodeMethod method,
SSACFG cfg,
ShrikeCFG scfg,
SSAInstruction[] instructions,
SymbolTable symbolTable,
boolean buildLocalMap,
SSAPiNodePolicy piNodePolicy) |
getEntryState, getIn, init, solve
public static SSABuilder make(IBytecodeMethod method, SSACFG cfg, ShrikeCFG scfg, SSAInstruction[] instructions, SymbolTable symbolTable, boolean buildLocalMap, SSAPiNodePolicy piNodePolicy) throws IllegalArgumentException
IllegalArgumentException
protected void initializeVariables()
AbstractIntStackMachine
initializeVariables
in class AbstractIntStackMachine
public void build()
public com.ibm.wala.ssa.SSABuilder.SSA2LocalMap getLocalMap()
public ShrikeIndirectionData getIndirectionData()