public class DexSSABuilder extends AbstractIntRegisterMachine
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.AbstractIntRegisterMachine.BasicRegisterFlowProvider, AbstractIntRegisterMachine.FlowProvider, AbstractIntRegisterMachine.MachineState, AbstractIntRegisterMachine.Meeter
BOTTOM, IGNORE, maxLocals, 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.dalvik.ssa.DexSSABuilder.SSA2LocalMap |
getLocalMap() |
protected void |
initializeVariables()
Convenience method ...
|
static DexSSABuilder |
make(DexIMethod method,
SSACFG cfg,
DexCFG scfg,
SSAInstruction[] instructions,
SymbolTable symbolTable,
boolean buildLocalMap,
SSAPiNodePolicy piNodePolicy) |
allocateNewLocalsArray, getEntryState, getIn, init, solve
public static DexSSABuilder make(DexIMethod method, SSACFG cfg, DexCFG scfg, SSAInstruction[] instructions, SymbolTable symbolTable, boolean buildLocalMap, SSAPiNodePolicy piNodePolicy) throws IllegalArgumentException
IllegalArgumentException
protected void initializeVariables()
AbstractIntRegisterMachine
initializeVariables
in class AbstractIntRegisterMachine
public void build()
public com.ibm.wala.dalvik.ssa.DexSSABuilder.SSA2LocalMap getLocalMap()
public ShrikeIndirectionData getIndirectionData()