public abstract class IndyWrapper extends CodegenReflectionWrapper implements org.objectweb.asm.Opcodes
| Modifier and Type | Field and Description |
|---|---|
static org.objectweb.asm.Handle |
BOOTSTRAP_METHOD |
arguments, field, method, oh, scopeIndex, wrappersguardException, guardsAALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8| Modifier | Constructor and Description |
|---|---|
protected |
IndyWrapper(ReflectionWrapper rw) |
| Modifier and Type | Method and Description |
|---|---|
static CallSite |
bootstrap(MethodHandles.Lookup caller,
String name,
MethodType type)
This bootstrap method simply points to the lookup method so we can see what is on the stack at runtime
since we need the parameters in order to make a decision.
|
abstract Object |
call(Object[] scopes) |
static IndyWrapper |
create(CodegenReflectionWrapper rw) |
static IndyWrapper |
create(CodegenReflectionWrapper rw,
boolean guard) |
static Class<?> |
defineClass(String name,
byte[] b) |
static String |
encodeClassName(String pkgName,
String name) |
static Object |
lookup(MutableCallSite callSite,
IndyWrapper iw,
Object scope)
This bootstrap method does the actual work of tracking down the CallSite at runtime.
|
guardCallgetArguments, getField, getMethod, getWrappers, toString, unwrapequals, getGuards, hashCodeprotected IndyWrapper(ReflectionWrapper rw)
public static CallSite bootstrap(MethodHandles.Lookup caller, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException
caller - name - type - NoSuchMethodExceptionIllegalAccessExceptionpublic abstract Object call(Object[] scopes) throws GuardException
call in interface Wrappercall in class ReflectionWrapperGuardExceptionpublic static IndyWrapper create(CodegenReflectionWrapper rw)
public static IndyWrapper create(CodegenReflectionWrapper rw, boolean guard)
public static Object lookup(MutableCallSite callSite, IndyWrapper iw, Object scope) throws IllegalAccessException, InvocationTargetException
callSite - iw - scope - IllegalAccessExceptionInvocationTargetExceptionCopyright © 2015. All rights reserved.