Package com.ibm.wala.shrikeBT
Class InvokeInstruction
- java.lang.Object
-
- com.ibm.wala.shrikeBT.Instruction
-
- com.ibm.wala.shrikeBT.InvokeInstruction
-
- All Implemented Interfaces:
Constants
,IInstruction
,IInvokeInstruction
,Cloneable
public class InvokeInstruction extends Instruction implements IInvokeInstruction
This class represents method invocation instructions.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.ibm.wala.shrikeBT.IInstruction
IInstruction.Visitor
-
Nested classes/interfaces inherited from interface com.ibm.wala.shrikeBT.IInvokeInstruction
IInvokeInstruction.Dispatch, IInvokeInstruction.IDispatch
-
-
Field Summary
Fields Modifier and Type Field Description protected String
classType
protected String
methodName
protected String
type
-
Fields inherited from class com.ibm.wala.shrikeBT.Instruction
noInstructions
-
Fields inherited from interface com.ibm.wala.shrikeBT.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_MethodRef, CONSTANT_MethodType, CONSTANT_NameAndType, CONSTANT_String, CONSTANT_Utf8, indexedTypes, indexedTypes_T, MAYBE, NO, OP_aaload, OP_aastore, OP_aconst_null, OP_aload, OP_aload_0, OP_aload_1, OP_aload_2, OP_aload_3, OP_anewarray, OP_areturn, OP_arraylength, OP_astore, OP_astore_0, OP_astore_1, OP_astore_2, OP_astore_3, OP_athrow, OP_baload, OP_bastore, OP_bipush, OP_caload, OP_castore, OP_checkcast, OP_d2f, OP_d2i, OP_d2l, OP_dadd, OP_daload, OP_dastore, OP_dcmpg, OP_dcmpl, OP_dconst_0, OP_dconst_1, OP_ddiv, OP_dload, OP_dload_0, OP_dload_1, OP_dload_2, OP_dload_3, OP_dmul, OP_dneg, OP_drem, OP_dreturn, OP_dstore, OP_dstore_0, OP_dstore_1, OP_dstore_2, OP_dstore_3, OP_dsub, OP_dup, OP_dup_x1, OP_dup_x2, OP_dup2, OP_dup2_x1, OP_dup2_x2, OP_f2d, OP_f2i, OP_f2l, OP_fadd, OP_faload, OP_fastore, OP_fcmpg, OP_fcmpl, OP_fconst_0, OP_fconst_1, OP_fconst_2, OP_fdiv, OP_fload, OP_fload_0, OP_fload_1, OP_fload_2, OP_fload_3, OP_fmul, OP_fneg, OP_frem, OP_freturn, OP_fstore, OP_fstore_0, OP_fstore_1, OP_fstore_2, OP_fstore_3, OP_fsub, OP_getfield, OP_getstatic, OP_goto, OP_goto_w, OP_i2b, OP_i2c, OP_i2d, OP_i2f, OP_i2l, OP_i2s, OP_iadd, OP_iaload, OP_iand, OP_iastore, OP_iconst_0, OP_iconst_1, OP_iconst_2, OP_iconst_3, OP_iconst_4, OP_iconst_5, OP_iconst_m1, OP_idiv, OP_if_acmpeq, OP_if_acmpne, OP_if_icmpeq, OP_if_icmpge, OP_if_icmpgt, OP_if_icmple, OP_if_icmplt, OP_if_icmpne, OP_ifeq, OP_ifge, OP_ifgt, OP_ifle, OP_iflt, OP_ifne, OP_ifnonnull, OP_ifnull, OP_iinc, OP_iload, OP_iload_0, OP_iload_1, OP_iload_2, OP_iload_3, OP_imul, OP_ineg, OP_instanceof, OP_invokedynamic, OP_invokeinterface, OP_invokespecial, OP_invokestatic, OP_invokevirtual, OP_ior, OP_irem, OP_ireturn, OP_ishl, OP_ishr, OP_istore, OP_istore_0, OP_istore_1, OP_istore_2, OP_istore_3, OP_isub, OP_iushr, OP_ixor, OP_jsr, OP_jsr_w, OP_l2d, OP_l2f, OP_l2i, OP_ladd, OP_laload, OP_land, OP_lastore, OP_lcmp, OP_lconst_0, OP_lconst_1, OP_ldc, OP_ldc_w, OP_ldc2_w, OP_ldiv, OP_lload, OP_lload_0, OP_lload_1, OP_lload_2, OP_lload_3, OP_lmul, OP_lneg, OP_lookupswitch, OP_lor, OP_lrem, OP_lreturn, OP_lshl, OP_lshr, OP_lstore, OP_lstore_0, OP_lstore_1, OP_lstore_2, OP_lstore_3, OP_lsub, OP_lushr, OP_lxor, OP_monitorenter, OP_monitorexit, OP_multianewarray, OP_new, OP_newarray, OP_nop, OP_pop, OP_pop2, OP_putfield, OP_putstatic, OP_ret, OP_return, OP_saload, OP_sastore, OP_sipush, OP_swap, OP_tableswitch, OP_wide, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TYPE_boolean, TYPE_boolean_index, TYPE_byte, TYPE_byte_index, TYPE_char, TYPE_char_index, TYPE_Class, TYPE_double, TYPE_double_index, TYPE_Error, TYPE_Exception, TYPE_float, TYPE_float_index, TYPE_int, TYPE_int_index, TYPE_long, TYPE_long_index, TYPE_MethodHandle, TYPE_MethodType, TYPE_null, TYPE_Object, TYPE_Object_index, TYPE_RuntimeException, TYPE_short, TYPE_short_index, TYPE_String, TYPE_Throwable, TYPE_unknown, TYPE_void, YES
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
String
getClassType()
IInvokeInstruction.Dispatch
getInvocationCode()
int
getInvocationMode()
String
getInvocationModeString()
String
getMethodName()
String
getMethodSignature()
int
getPoppedCount()
String
getPushedType(String[] types)
Computes the type of data pushed onto the stack, or null if none is pushed.byte
getPushedWordSize()
int
hashCode()
boolean
isPEI()
PEI == "Potentially excepting instruction"static InvokeInstruction
make(String type, String className, String methodName, IInvokeInstruction.Dispatch mode)
String
toString()
Subclasses must implement toString.void
visit(IInstruction.Visitor v)
Apply a Visitor to this instruction.-
Methods inherited from class com.ibm.wala.shrikeBT.Instruction
clone, getBranchTargets, getOpcode, isFallThrough, redirectTargets
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.ibm.wala.shrikeBT.IInstruction
getBranchTargets, isFallThrough, redirectTargets
-
-
-
-
Method Detail
-
make
public static InvokeInstruction make(String type, String className, String methodName, IInvokeInstruction.Dispatch mode) throws NullPointerException
- Throws:
NullPointerException
-
getClassType
public String getClassType()
- Specified by:
getClassType
in interfaceIInvokeInstruction
-
getMethodName
public String getMethodName()
- Specified by:
getMethodName
in interfaceIInvokeInstruction
-
getMethodSignature
public String getMethodSignature()
- Specified by:
getMethodSignature
in interfaceIInvokeInstruction
-
getInvocationMode
public final int getInvocationMode()
-
getInvocationModeString
public final String getInvocationModeString()
-
getPoppedCount
public final int getPoppedCount()
- Specified by:
getPoppedCount
in interfaceIInstruction
- Overrides:
getPoppedCount
in classInstruction
- Returns:
- the number of values this instruction pops off the working stack
-
getPushedType
public final String getPushedType(String[] types)
Description copied from class:Instruction
Computes the type of data pushed onto the stack, or null if none is pushed.- Specified by:
getPushedType
in interfaceIInstruction
- Overrides:
getPushedType
in classInstruction
- Parameters:
types
- the types of the data popped off the stack by this instruction; if poppedTypes is null, then we don't know the incoming stack types and the result of this method may be less accurate
-
getPushedWordSize
public final byte getPushedWordSize()
- Specified by:
getPushedWordSize
in interfaceIInstruction
- Overrides:
getPushedWordSize
in classInstruction
- Returns:
- the JVM word size of the value this instruction pushes onto the stack, or 0 if this instruction doesn't push anything onto the stack.
-
visit
public final void visit(IInstruction.Visitor v) throws NullPointerException
Description copied from class:Instruction
Apply a Visitor to this instruction. We invoke the appropriate Visitor method according to the type of this instruction.- Specified by:
visit
in interfaceIInstruction
- Specified by:
visit
in classInstruction
- Throws:
NullPointerException
-
toString
public final String toString()
Description copied from class:Instruction
Subclasses must implement toString.- Specified by:
toString
in interfaceIInstruction
- Specified by:
toString
in classInstruction
-
isPEI
public boolean isPEI()
Description copied from interface:IInstruction
PEI == "Potentially excepting instruction"- Specified by:
isPEI
in interfaceIInstruction
- Returns:
- true iff this instruction might throw an exception
-
getInvocationCode
public IInvokeInstruction.Dispatch getInvocationCode()
- Specified by:
getInvocationCode
in interfaceIInvokeInstruction
- Returns:
- one of BytecodeConstants.INVOKE[SPECIAL|VIRTUAL|STATIC|INTERFACE]
-
-