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, wrappers
guardException, guards
AALOAD, 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.
|
guardCall
getArguments, getField, getMethod, getWrappers, toString, unwrap
equals, getGuards, hashCode
protected IndyWrapper(ReflectionWrapper rw)
public static CallSite bootstrap(MethodHandles.Lookup caller, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException
caller
- name
- type
- NoSuchMethodException
IllegalAccessException
public abstract Object call(Object[] scopes) throws GuardException
call
in interface Wrapper
call
in class ReflectionWrapper
GuardException
public 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
- IllegalAccessException
InvocationTargetException
Copyright © 2016. All rights reserved.