com.ibm.wala.shrikeBT
Class InvokeInstruction

java.lang.Object
  extended by com.ibm.wala.shrikeBT.Instruction
      extended by com.ibm.wala.shrikeBT.InvokeInstruction
All Implemented Interfaces:
Constants, IInstruction, IInvokeInstruction, java.lang.Cloneable

public class InvokeInstruction
extends Instruction
implements IInvokeInstruction

This class represents method invocation instructions.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.ibm.wala.shrikeBT.Instruction
Instruction.Visitor
 
Nested classes/interfaces inherited from interface com.ibm.wala.shrikeBT.IInvokeInstruction
IInvokeInstruction.Dispatch, IInvokeInstruction.IDispatch
 
Field Summary
protected  java.lang.String classType
           
protected  java.lang.String methodName
           
protected  java.lang.String type
           
 
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_Long, CONSTANT_MethodRef, 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_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, OP_xxxunusedxxx, 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_null, TYPE_Object, TYPE_Object_index, TYPE_RuntimeException, TYPE_short, TYPE_short_index, TYPE_String, TYPE_Throwable, TYPE_unknown, TYPE_void, YES
 
Method Summary
 boolean equals(java.lang.Object o)
           
 java.lang.String getClassType()
           
 IInvokeInstruction.Dispatch getInvocationCode()
           
 int getInvocationMode()
           
 java.lang.String getInvocationModeString()
           
 java.lang.String getMethodName()
           
 java.lang.String getMethodSignature()
           
 int getPoppedCount()
           
 java.lang.String getPushedType(java.lang.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(java.lang.String type, java.lang.String className, java.lang.String methodName, IInvokeInstruction.Dispatch mode)
           
 java.lang.String toString()
          Subclasses must implement toString.
 void visit(Instruction.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
 

Field Detail

type

protected java.lang.String type

classType

protected java.lang.String classType

methodName

protected java.lang.String methodName
Method Detail

make

public static InvokeInstruction make(java.lang.String type,
                                     java.lang.String className,
                                     java.lang.String methodName,
                                     IInvokeInstruction.Dispatch mode)
                              throws java.lang.NullPointerException
Throws:
java.lang.NullPointerException

equals

public final boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

getClassType

public java.lang.String getClassType()

getMethodName

public java.lang.String getMethodName()

getMethodSignature

public java.lang.String getMethodSignature()

getInvocationMode

public final int getInvocationMode()

getInvocationModeString

public final java.lang.String getInvocationModeString()

hashCode

public final int hashCode()
Overrides:
hashCode in class java.lang.Object

getPoppedCount

public final int getPoppedCount()
Overrides:
getPoppedCount in class Instruction
Returns:
the number of values this instruction pops off the working stack

getPushedType

public final java.lang.String getPushedType(java.lang.String[] types)
Description copied from class: Instruction
Computes the type of data pushed onto the stack, or null if none is pushed.

Overrides:
getPushedType in class Instruction
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()
Overrides:
getPushedWordSize in class Instruction
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(Instruction.Visitor v)
                 throws java.lang.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 class Instruction
Throws:
java.lang.NullPointerException

toString

public final java.lang.String toString()
Description copied from class: Instruction
Subclasses must implement toString.

Specified by:
toString in class Instruction

isPEI

public boolean isPEI()
Description copied from interface: IInstruction
PEI == "Potentially excepting instruction"

Specified by:
isPEI in interface IInstruction
Returns:
true iff this instruction might throw an exception

getInvocationCode

public IInvokeInstruction.Dispatch getInvocationCode()
Specified by:
getInvocationCode in interface IInvokeInstruction
Returns:
one of BytecodeConstants.INVOKE[SPECIAL|VIRTUAL|STATIC|INTERFACE]