public class InvokeDynamicInstruction extends Instruction implements IInvokeInstruction
IInvokeInstruction.Dispatch, IInvokeInstruction.IDispatchIInstruction.Visitor| Modifier and Type | Field and Description |
|---|---|
protected BootstrapMethodsReader.BootstrapMethod |
bootstrap |
protected java.lang.String |
methodName |
protected java.lang.String |
methodType |
noInstructionsACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, 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 and Description |
|---|
InvokeDynamicInstruction(short opcode,
BootstrapMethodsReader.BootstrapMethod bootstrap,
java.lang.String methodName,
java.lang.String methodType) |
| Modifier and Type | Method and Description |
|---|---|
java.lang.invoke.CallSite |
bootstrap(java.lang.Class<?> cl) |
BootstrapMethodsReader.BootstrapMethod |
getBootstrap() |
java.lang.String |
getClassType() |
IInvokeInstruction.Dispatch |
getInvocationCode() |
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() |
boolean |
isPEI()
PEI == "Potentially excepting instruction"
|
static java.lang.invoke.MethodType |
makeMethodType(java.lang.ClassLoader classLoader,
java.lang.String descriptor) |
java.lang.String |
toString()
Subclasses must implement toString.
|
void |
visit(IInstruction.Visitor v)
Apply a Visitor to this instruction.
|
clone, getBranchTargets, getOpcode, isFallThrough, redirectTargetsequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetBranchTargets, isFallThrough, redirectTargetsprotected BootstrapMethodsReader.BootstrapMethod bootstrap
protected java.lang.String methodName
protected java.lang.String methodType
public InvokeDynamicInstruction(short opcode,
BootstrapMethodsReader.BootstrapMethod bootstrap,
java.lang.String methodName,
java.lang.String methodType)
public boolean isPEI()
IInstructionisPEI in interface IInstructionpublic IInvokeInstruction.Dispatch getInvocationCode()
getInvocationCode in interface IInvokeInstructionpublic final int getPoppedCount()
getPoppedCount in interface IInstructiongetPoppedCount in class Instructionpublic final java.lang.String getPushedType(java.lang.String[] types)
InstructiongetPushedType in interface IInstructiongetPushedType in class Instructiontypes - 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 accuratepublic final byte getPushedWordSize()
getPushedWordSize in interface IInstructiongetPushedWordSize in class Instructionpublic BootstrapMethodsReader.BootstrapMethod getBootstrap()
public java.lang.String getMethodSignature()
getMethodSignature in interface IInvokeInstructionpublic java.lang.String getMethodName()
getMethodName in interface IInvokeInstructionpublic java.lang.String getClassType()
getClassType in interface IInvokeInstructionpublic void visit(IInstruction.Visitor v)
Instructionvisit in interface IInstructionvisit in class Instructionpublic java.lang.String toString()
InstructiontoString in interface IInstructiontoString in class Instructionpublic 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
java.lang.ClassNotFoundExceptionjava.lang.NoSuchMethodExceptionjava.lang.SecurityExceptionjava.lang.IllegalAccessExceptionjava.lang.IllegalArgumentExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.NoSuchFieldExceptionpublic static java.lang.invoke.MethodType makeMethodType(java.lang.ClassLoader classLoader,
java.lang.String descriptor)
throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException