Package com.ibm.wala.shrikeBT
Class InvokeDynamicInstruction
- java.lang.Object
-
- com.ibm.wala.shrikeBT.Instruction
-
- com.ibm.wala.shrikeBT.InvokeDynamicInstruction
-
- All Implemented Interfaces:
Constants
,IInstruction
,IInvokeInstruction
,Cloneable
public class InvokeDynamicInstruction extends Instruction implements IInvokeInstruction
-
-
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 BootstrapMethodsReader.BootstrapMethod
bootstrap
protected String
methodName
protected String
methodType
-
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 CallSite
bootstrap(Class cl)
BootstrapMethodsReader.BootstrapMethod
getBootstrap()
String
getClassType()
IInvokeInstruction.Dispatch
getInvocationCode()
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()
boolean
isPEI()
PEI == "Potentially excepting instruction"static MethodType
makeMethodType(ClassLoader classLoader, String descriptor)
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
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.ibm.wala.shrikeBT.IInstruction
getBranchTargets, isFallThrough, redirectTargets
-
-
-
-
Field Detail
-
bootstrap
protected BootstrapMethodsReader.BootstrapMethod bootstrap
-
methodName
protected String methodName
-
methodType
protected String methodType
-
-
Method Detail
-
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]
-
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.
-
getBootstrap
public BootstrapMethodsReader.BootstrapMethod getBootstrap()
-
getMethodSignature
public String getMethodSignature()
- Specified by:
getMethodSignature
in interfaceIInvokeInstruction
-
getMethodName
public String getMethodName()
- Specified by:
getMethodName
in interfaceIInvokeInstruction
-
getClassType
public String getClassType()
- Specified by:
getClassType
in interfaceIInvokeInstruction
-
visit
public void visit(IInstruction.Visitor v)
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
-
toString
public String toString()
Description copied from class:Instruction
Subclasses must implement toString.- Specified by:
toString
in interfaceIInstruction
- Specified by:
toString
in classInstruction
-
bootstrap
public CallSite bootstrap(Class cl) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException
-
makeMethodType
public static MethodType makeMethodType(ClassLoader classLoader, String descriptor) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
-