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.MeeterBOTTOM, IGNORE, OPTIMISTIC, TOP, UNANALYZED| 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, solvepublic static SSABuilder make(IBytecodeMethod<?> method, SSACFG cfg, ShrikeCFG scfg, SSAInstruction[] instructions, SymbolTable symbolTable, boolean buildLocalMap, SSAPiNodePolicy piNodePolicy) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionprotected void initializeVariables()
AbstractIntStackMachineinitializeVariables in class AbstractIntStackMachinepublic void build()
public com.ibm.wala.ssa.SSABuilder.SSA2LocalMap getLocalMap()
public ShrikeIndirectionData getIndirectionData()