Package com.ibm.wala.shrike.shrikeBT
Class InvokeDynamicInstruction
- java.lang.Object
-
- com.ibm.wala.shrike.shrikeBT.Instruction
-
- com.ibm.wala.shrike.shrikeBT.InvokeDynamicInstruction
-
- All Implemented Interfaces:
Constants,IInstruction,IInvokeInstruction,java.lang.Cloneable
public class InvokeDynamicInstruction extends Instruction implements IInvokeInstruction
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.ibm.wala.shrike.shrikeBT.IInstruction
IInstruction.Visitor
-
Nested classes/interfaces inherited from interface com.ibm.wala.shrike.shrikeBT.IInvokeInstruction
IInvokeInstruction.Dispatch, IInvokeInstruction.IDispatch
-
-
Field Summary
Fields Modifier and Type Field Description protected BootstrapMethodsReader.BootstrapMethodbootstrapprotected java.lang.StringmethodNameprotected java.lang.StringmethodType-
Fields inherited from class com.ibm.wala.shrike.shrikeBT.Instruction
noInstructions
-
Fields inherited from interface com.ibm.wala.shrike.shrikeBT.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
Constructors Constructor Description InvokeDynamicInstruction(short opcode, BootstrapMethodsReader.BootstrapMethod bootstrap, java.lang.String methodName, java.lang.String methodType)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.invoke.CallSitebootstrap(java.lang.Class<?> cl)BootstrapMethodsReader.BootstrapMethodgetBootstrap()java.lang.StringgetClassType()IInvokeInstruction.DispatchgetInvocationCode()java.lang.StringgetMethodName()java.lang.StringgetMethodSignature()intgetPoppedCount()java.lang.StringgetPushedType(java.lang.String[] types)Computes the type of data pushed onto the stack, or null if none is pushed.bytegetPushedWordSize()booleanisPEI()PEI == "Potentially excepting instruction"static java.lang.invoke.MethodTypemakeMethodType(java.lang.ClassLoader classLoader, java.lang.String descriptor)java.lang.StringtoString()Subclasses must implement toString.voidvisit(IInstruction.Visitor v)Apply a Visitor to this instruction.-
Methods inherited from class com.ibm.wala.shrike.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.shrike.shrikeBT.IInstruction
getBranchTargets, isFallThrough, redirectTargets
-
-
-
-
Field Detail
-
bootstrap
protected BootstrapMethodsReader.BootstrapMethod bootstrap
-
methodName
protected java.lang.String methodName
-
methodType
protected java.lang.String methodType
-
-
Constructor Detail
-
InvokeDynamicInstruction
public InvokeDynamicInstruction(short opcode, BootstrapMethodsReader.BootstrapMethod bootstrap, java.lang.String methodName, java.lang.String methodType)
-
-
Method Detail
-
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
public IInvokeInstruction.Dispatch 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
public final java.lang.String getPushedType(java.lang.String[] types)
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
public BootstrapMethodsReader.BootstrapMethod getBootstrap()
-
getMethodSignature
public java.lang.String getMethodSignature()
- Specified by:
getMethodSignaturein interfaceIInvokeInstruction
-
getMethodName
public java.lang.String getMethodName()
- Specified by:
getMethodNamein interfaceIInvokeInstruction
-
getClassType
public java.lang.String getClassType()
- Specified by:
getClassTypein interfaceIInvokeInstruction
-
visit
public void visit(IInstruction.Visitor v)
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
public java.lang.String toString()
Description copied from class:InstructionSubclasses must implement toString.- Specified by:
toStringin interfaceIInstruction- Specified by:
toStringin classInstruction
-
bootstrap
public java.lang.invoke.CallSite bootstrap(java.lang.Class<?> cl) throws java.lang.ClassNotFoundException, java.lang.NoSuchMethodException, java.lang.SecurityException, java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchFieldException- Throws:
java.lang.ClassNotFoundExceptionjava.lang.NoSuchMethodExceptionjava.lang.SecurityExceptionjava.lang.IllegalAccessExceptionjava.lang.IllegalArgumentExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.NoSuchFieldException
-
makeMethodType
public static java.lang.invoke.MethodType makeMethodType(java.lang.ClassLoader classLoader, java.lang.String descriptor) throws java.lang.ClassNotFoundException- Throws:
java.lang.ClassNotFoundException
-
-