protected abstract static class AbstractIntRegisterMachine.BasicRegisterFlowProvider extends Object implements AbstractIntRegisterMachine.FlowProvider, DexConstants
| Modifier and Type | Class and Description |
|---|---|
protected class |
AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor
Update the machine state to account for an instruction
|
| Modifier and Type | Field and Description |
|---|---|
protected AbstractIntRegisterMachine.MachineState |
workingState |
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| Modifier | Constructor and Description |
|---|---|
protected |
AbstractIntRegisterMachine.BasicRegisterFlowProvider(DexCFG cfg)
Only subclasses can instantiate
|
| Modifier and Type | Method and Description |
|---|---|
AbstractIntRegisterMachine.MachineState |
flow(AbstractIntRegisterMachine.MachineState entry,
DexCFG.BasicBlock basicBlock)
Compute the MachineState at the exit of a basic block, given a MachineState at the block's entry.
|
AbstractIntRegisterMachine.MachineState |
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 |
getCurrentBlock() |
protected int |
getCurrentInstructionIndex() |
protected int |
getCurrentProgramCounter() |
protected DexCFG.BasicBlock |
getCurrentSuccessor() |
abstract Instruction[] |
getInstructions() |
protected void |
init(AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor v,
Instruction.Visitor ev)
Initialize the visitors used to perform the flow functions
|
boolean |
needsEdgeFlow() |
boolean |
needsNodeFlow() |
protected AbstractIntRegisterMachine.MachineState workingState
protected AbstractIntRegisterMachine.BasicRegisterFlowProvider(DexCFG cfg)
protected void init(AbstractIntRegisterMachine.BasicRegisterFlowProvider.BasicRegisterMachineVisitor v, Instruction.Visitor ev)
public boolean needsNodeFlow()
needsNodeFlow in interface AbstractIntRegisterMachine.FlowProviderpublic boolean needsEdgeFlow()
needsEdgeFlow in interface AbstractIntRegisterMachine.FlowProviderpublic AbstractIntRegisterMachine.MachineState flow(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock basicBlock)
AbstractIntRegisterMachine.FlowProviderflow in interface AbstractIntRegisterMachine.FlowProviderpublic AbstractIntRegisterMachine.MachineState flow(AbstractIntRegisterMachine.MachineState entry, DexCFG.BasicBlock from, DexCFG.BasicBlock to)
AbstractIntRegisterMachine.FlowProviderflow in interface AbstractIntRegisterMachine.FlowProviderprotected int getCurrentInstructionIndex()
protected int getCurrentProgramCounter()
protected DexCFG.BasicBlock getCurrentBlock()
protected DexCFG.BasicBlock getCurrentSuccessor()
public abstract Instruction[] getInstructions()
Copyright © 2017. All rights reserved.