public abstract class MethodInvocationInstruction extends DexlibAbstractInstruction implements DanglingInstruction
Modifier and Type | Field and Description |
---|---|
protected AssignStmt |
assign |
protected InvokeExpr |
invocation |
codeAddress, instruction, lineNumber, unit
Constructor and Description |
---|
MethodInvocationInstruction(Instruction instruction,
int codeAddress) |
Modifier and Type | Method and Description |
---|---|
protected java.util.List<Local> |
buildParameters(DexBody body,
boolean isStatic)
Build the parameters of this invocation.
|
void |
finalize(DexBody body,
DexlibAbstractInstruction successor)
Finalize this instruction taking the successor into consideration.
|
protected SootMethodRef |
getSootMethodRef()
Return the SootMethodRef for the invoked method.
|
protected SootMethodRef |
getStaticSootMethodRef()
Return the static SootMethodRef for the invoked method.
|
protected MethodReference |
getTargetMethodReference()
Gets a reference to the target method that is invoked
|
protected java.util.List<java.lang.Integer> |
getUsedRegistersNums()
Return the indices used in this instruction.
|
java.util.Set<Type> |
introducedTypes()
Return the types that are be introduced by this instruction.
|
protected boolean |
isUsedAsFloatingPoint(DexBody body,
int register,
boolean isStatic)
Determine if register is used as floating point.
|
protected boolean |
isUsedAsObject(DexBody body,
int register,
boolean isStatic)
Determine if register is used as object.
|
protected void |
jimplifyInterface(DexBody body)
Executes the "jimplify" operation for an interface invocation
|
protected void |
jimplifySpecial(DexBody body)
Executes the "jimplify" operation for a special invocation
|
protected void |
jimplifyStatic(DexBody body)
Executes the "jimplify" operation for a static invocation
|
protected void |
jimplifyVirtual(DexBody body)
Executes the "jimplify" operation for a virtual invocation
|
addTags, getInstruction, getLineNumber, getUnit, getUsedRegistersNums, getUsedRegistersNums, jimplify, setLineNumber, setUnit
protected InvokeExpr invocation
protected AssignStmt assign
public MethodInvocationInstruction(Instruction instruction, int codeAddress)
public void finalize(DexBody body, DexlibAbstractInstruction successor)
DanglingInstruction
finalize
in interface DanglingInstruction
body
- to finalize intosuccessor
- the direct successor of this instructionpublic java.util.Set<Type> introducedTypes()
DexlibAbstractInstruction
introducedTypes
in class DexlibAbstractInstruction
protected boolean isUsedAsFloatingPoint(DexBody body, int register, boolean isStatic)
isStatic
- if this method is staticprotected boolean isUsedAsObject(DexBody body, int register, boolean isStatic)
isStatic
- if this method is staticprotected SootMethodRef getSootMethodRef()
protected SootMethodRef getStaticSootMethodRef()
protected MethodReference getTargetMethodReference()
protected java.util.List<Local> buildParameters(DexBody body, boolean isStatic)
body
- the body to build for and intoisStatic
- if method is staticprotected java.util.List<java.lang.Integer> getUsedRegistersNums()
protected void jimplifyVirtual(DexBody body)
protected void jimplifyInterface(DexBody body)
protected void jimplifySpecial(DexBody body)
protected void jimplifyStatic(DexBody body)