Class InvokeDynamicInstruction
java.lang.Object
com.ibm.wala.shrike.shrikeBT.Instruction
com.ibm.wala.shrike.shrikeBT.InvokeDynamicInstruction
- All Implemented Interfaces:
Constants, IInstruction, IInvokeInstruction, Cloneable
-
Nested Class Summary
Nested classes/interfaces inherited from interface IInstruction
IInstruction.VisitorNested classes/interfaces inherited from interface IInvokeInstruction
IInvokeInstruction.Dispatch, IInvokeInstruction.IDispatch -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected BootstrapMethodsReader.BootstrapMethodprotected Stringprotected StringFields inherited from class Instruction
noInstructionsFields inherited from interface Constants
ACC_ABSTRACT, ACC_ANNOTATION, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MODULE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, 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 -
Constructor Summary
ConstructorsConstructorDescriptionInvokeDynamicInstruction(short opcode, BootstrapMethodsReader.BootstrapMethod bootstrap, String methodName, String methodType) -
Method Summary
Modifier and TypeMethodDescriptionfinal intfinal StringgetPushedType(String[] types) Computes the type of data pushed onto the stack, or null if none is pushed.final bytebooleanisPEI()PEI == "Potentially excepting instruction"static MethodTypemakeMethodType(ClassLoader classLoader, String descriptor) toString()Subclasses must implement toString.voidApply a Visitor to this instruction.Methods inherited from class Instruction
clone, getBranchTargets, getOpcode, isFallThrough, redirectTargetsMethods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface IInstruction
getBranchTargets, isFallThrough, redirectTargets
-
Field Details
-
bootstrap
-
methodName
-
methodType
-
-
Constructor Details
-
InvokeDynamicInstruction
public InvokeDynamicInstruction(short opcode, BootstrapMethodsReader.BootstrapMethod bootstrap, String methodName, String methodType)
-
-
Method Details
-
isPEI
public boolean isPEI()Description copied from interface:IInstructionPEI == "Potentially excepting instruction"- Specified by:
isPEIin interfaceIInstruction- Returns:
- true iff this instruction might throw an exception
-
getInvocationCode
- Specified by:
getInvocationCodein interfaceIInvokeInstruction- Returns:
- one of BytecodeConstants.INVOKE[SPECIAL|VIRTUAL|STATIC|INTERFACE]
-
getPoppedCount
public final int getPoppedCount()- Specified by:
getPoppedCountin interfaceIInstruction- Overrides:
getPoppedCountin classInstruction- Returns:
- the number of values this instruction pops off the working stack
-
getPushedType
Description copied from class:InstructionComputes the type of data pushed onto the stack, or null if none is pushed.- Specified by:
getPushedTypein interfaceIInstruction- Overrides:
getPushedTypein 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:
getPushedWordSizein interfaceIInstruction- Overrides:
getPushedWordSizein 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
-
getMethodSignature
- Specified by:
getMethodSignaturein interfaceIInvokeInstruction
-
getMethodName
- Specified by:
getMethodNamein interfaceIInvokeInstruction
-
getClassType
- Specified by:
getClassTypein interfaceIInvokeInstruction
-
visit
Description copied from class:InstructionApply a Visitor to this instruction. We invoke the appropriate Visitor method according to the type of this instruction.- Specified by:
visitin interfaceIInstruction- Specified by:
visitin classInstruction
-
toString
Description copied from class:InstructionSubclasses must implement toString.- Specified by:
toStringin interfaceIInstruction- Specified by:
toStringin 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
-