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
Modifier and TypeClassDescriptionprotected static class
Update the machine state to account for an instruction -
Field Summary
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
ModifierConstructorDescriptionprotected
Only subclasses can instantiate -
Method Summary
Modifier and TypeMethodDescriptionflow
(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock basicBlock) Compute the MachineState at the exit of a basic block, given a MachineState at the block's entry.flow
(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock from, DexCFG.BasicBlock to) Compute the MachineState at the end of an edge, given a MachineState at the edges's entry.protected DexCFG.BasicBlock
protected int
protected int
protected DexCFG.BasicBlock
abstract Instruction[]
protected void
init
(AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor v, Instruction.Visitor ev) Initialize the visitors used to perform the flow functionsboolean
boolean
-
Field Details
-
workingState
-
-
Constructor Details
-
BasicRegisterFlowProvider
Only subclasses can instantiate
-
-
Method Details
-
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
-
getCurrentSuccessor
-
getInstructions
-