Package com.ibm.wala.dalvik.ssa
Class AbstractIntRegisterMachine.BasicRegisterFlowProvider
- java.lang.Object
-
- com.ibm.wala.dalvik.ssa.AbstractIntRegisterMachine.BasicRegisterFlowProvider
-
- All Implemented Interfaces:
DexConstants
,AbstractIntRegisterMachine.FlowProvider
- Enclosing class:
- AbstractIntRegisterMachine
protected abstract static class AbstractIntRegisterMachine.BasicRegisterFlowProvider extends Object implements AbstractIntRegisterMachine.FlowProvider, DexConstants
This gives some basic facilities for shoving things around on the stack. Client analyses should subclass this as needed.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor
Update the machine state to account for an instruction
-
Field Summary
Fields Modifier and Type Field Description protected AbstractIntRegisterMachine.MachineState
workingState
-
Fields inherited from interface com.ibm.wala.dalvik.classLoader.DexConstants
ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_CONSTRUCTOR, ACC_DECLARED_SYNCHRONIZED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_private, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_STRICT, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_UNUSED, ACC_VARARGS, ACC_VOLATILE, VALUE_ANNOTATION, VALUE_ARRAY, VALUE_BOOLEAN, VALUE_BYTE, VALUE_CHAR, VALUE_DOUBLE, VALUE_ENUM, VALUE_FIELD, VALUE_FLOAT, VALUE_INT, VALUE_LONG, VALUE_METHOD, VALUE_NULL, VALUE_SHORT, VALUE_STRING, VALUE_TYPE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BasicRegisterFlowProvider(DexCFG cfg)
Only subclasses can instantiate
-
Method Summary
-
-
-
Field Detail
-
workingState
protected AbstractIntRegisterMachine.MachineState workingState
-
-
Constructor Detail
-
BasicRegisterFlowProvider
protected BasicRegisterFlowProvider(DexCFG cfg)
Only subclasses can instantiate
-
-
Method Detail
-
init
protected void init(AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor v, Instruction.Visitor ev)
Initialize the visitors used to perform the flow functions
-
needsNodeFlow
public boolean needsNodeFlow()
- Specified by:
needsNodeFlow
in interfaceAbstractIntRegisterMachine.FlowProvider
-
needsEdgeFlow
public boolean needsEdgeFlow()
- Specified by:
needsEdgeFlow
in interfaceAbstractIntRegisterMachine.FlowProvider
-
flow
public AbstractIntRegisterMachine.MachineState flow(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock basicBlock)
Description copied from interface:AbstractIntRegisterMachine.FlowProvider
Compute the MachineState at the exit of a basic block, given a MachineState at the block's entry.- Specified by:
flow
in interfaceAbstractIntRegisterMachine.FlowProvider
-
flow
public AbstractIntRegisterMachine.MachineState flow(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock from, DexCFG.BasicBlock to)
Description copied from interface:AbstractIntRegisterMachine.FlowProvider
Compute the MachineState at the end of an edge, given a MachineState at the edges's entry.- Specified by:
flow
in interfaceAbstractIntRegisterMachine.FlowProvider
-
getCurrentInstructionIndex
protected int getCurrentInstructionIndex()
-
getCurrentProgramCounter
protected int getCurrentProgramCounter()
-
getCurrentBlock
protected DexCFG.BasicBlock getCurrentBlock()
-
getCurrentSuccessor
protected DexCFG.BasicBlock getCurrentSuccessor()
-
getInstructions
public abstract Instruction[] getInstructions()
-
-