public abstract class ConditionalJumpInstruction extends JumpInstruction implements DeferableInstruction
markerUnit, targetInstruction
codeAddress, instruction, lineNumber, unit
Constructor and Description |
---|
ConditionalJumpInstruction(Instruction instruction,
int codeAdress) |
Modifier and Type | Method and Description |
---|---|
void |
deferredJimplify(DexBody body)
Jimplify this instruction with the guarantee that every other
(non-deferred) instruction has been jimplified.
|
protected ConditionExpr |
getComparisonExpr(DexBody body,
int reg)
Get comparison expression depending on opcode against zero or null.
|
protected ConditionExpr |
getComparisonExpr(Immediate one,
Immediate other)
Get comparison expression depending on opcode between two immediates
|
protected abstract IfStmt |
ifStatement(DexBody body)
Return an if statement depending on the instruction.
|
void |
jimplify(DexBody body)
Jimplify this instruction.
|
getTargetInstruction
addTags, getInstruction, getLineNumber, getUnit, getUsedRegistersNums, getUsedRegistersNums, introducedTypes, setLineNumber, setUnit
public ConditionalJumpInstruction(Instruction instruction, int codeAdress)
protected abstract IfStmt ifStatement(DexBody body)
public void jimplify(DexBody body)
DexlibAbstractInstruction
jimplify
in class DexlibAbstractInstruction
body
- to jimplify into.public void deferredJimplify(DexBody body)
DeferableInstruction
deferredJimplify
in interface DeferableInstruction
body
- to jimplify intoprotected ConditionExpr getComparisonExpr(DexBody body, int reg)
body
- the containing DexBodyreg
- the register to compare against zero.protected ConditionExpr getComparisonExpr(Immediate one, Immediate other)
one
- first immediateother
- second immediatejava.lang.RuntimeException
- if this is not a IfTest or IfTestz instruction.