org.codehaus.groovy.reflection
Class MethodHandleFactory

java.lang.Object
  extended by org.codehaus.groovy.reflection.MethodHandleFactory
All Implemented Interfaces:
org.objectweb.asm.Opcodes

public class MethodHandleFactory
extends java.lang.Object
implements org.objectweb.asm.Opcodes


Nested Class Summary
private static class MethodHandleFactory.ReflectiveMethodHandle
           
 
Field Summary
private static java.lang.String[] EXCEPTIONS
           
 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, 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_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6
 
Constructor Summary
MethodHandleFactory()
           
 
Method Summary
private static boolean checkAccessable(java.lang.reflect.Method method)
           
private static java.lang.reflect.Constructor compileMethodHandle(java.lang.reflect.Method cachedMethod, ClassLoaderForClassArtifacts loader)
           
private static MethodHandle createCompiledMethodHandle(java.lang.reflect.Method method, ClassLoaderForClassArtifacts loader)
           
private static void genConstructor(org.objectweb.asm.ClassWriter cw, java.lang.String superClass)
           
private static void genInvokeWithFixedParams(org.objectweb.asm.ClassWriter cw, java.lang.reflect.Method method)
           
private static void genInvokeWithFixedPrimitiveParams(org.objectweb.asm.ClassWriter cw, java.lang.reflect.Method method)
           
static void genInvokeXxxWithArray(org.objectweb.asm.ClassWriter cw, java.lang.reflect.Method method)
           
static void genLoadParameters(int argumentIndex, org.objectweb.asm.MethodVisitor mv, BytecodeHelper helper, java.lang.reflect.Method method)
           
static void genLoadParametersDirect(int argumentIndex, org.objectweb.asm.MethodVisitor mv, BytecodeHelper helper, java.lang.reflect.Method method)
           
static void genLoadParametersPrimitiveDirect(int argumentIndex, org.objectweb.asm.MethodVisitor mv, BytecodeHelper helper, java.lang.reflect.Method method)
           
private static byte[] genMethodHandle(java.lang.reflect.Method method, org.objectweb.asm.ClassWriter cw, java.lang.String name)
           
static MethodHandle unreflect(java.lang.reflect.Method method)
           
private static MethodHandle unreflect(java.lang.reflect.Method method, ClassLoaderForClassArtifacts loader)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EXCEPTIONS

private static final java.lang.String[] EXCEPTIONS
Constructor Detail

MethodHandleFactory

public MethodHandleFactory()
Method Detail

unreflect

public static MethodHandle unreflect(java.lang.reflect.Method method)

unreflect

private static MethodHandle unreflect(java.lang.reflect.Method method,
                                      ClassLoaderForClassArtifacts loader)

checkAccessable

private static boolean checkAccessable(java.lang.reflect.Method method)

genLoadParameters

public static void genLoadParameters(int argumentIndex,
                                     org.objectweb.asm.MethodVisitor mv,
                                     BytecodeHelper helper,
                                     java.lang.reflect.Method method)

genLoadParametersDirect

public static void genLoadParametersDirect(int argumentIndex,
                                           org.objectweb.asm.MethodVisitor mv,
                                           BytecodeHelper helper,
                                           java.lang.reflect.Method method)

genLoadParametersPrimitiveDirect

public static void genLoadParametersPrimitiveDirect(int argumentIndex,
                                                    org.objectweb.asm.MethodVisitor mv,
                                                    BytecodeHelper helper,
                                                    java.lang.reflect.Method method)

createCompiledMethodHandle

private static MethodHandle createCompiledMethodHandle(java.lang.reflect.Method method,
                                                       ClassLoaderForClassArtifacts loader)

compileMethodHandle

private static java.lang.reflect.Constructor compileMethodHandle(java.lang.reflect.Method cachedMethod,
                                                                 ClassLoaderForClassArtifacts loader)

genMethodHandle

private static byte[] genMethodHandle(java.lang.reflect.Method method,
                                      org.objectweb.asm.ClassWriter cw,
                                      java.lang.String name)

genConstructor

private static void genConstructor(org.objectweb.asm.ClassWriter cw,
                                   java.lang.String superClass)

genInvokeXxxWithArray

public static void genInvokeXxxWithArray(org.objectweb.asm.ClassWriter cw,
                                         java.lang.reflect.Method method)

genInvokeWithFixedParams

private static void genInvokeWithFixedParams(org.objectweb.asm.ClassWriter cw,
                                             java.lang.reflect.Method method)

genInvokeWithFixedPrimitiveParams

private static void genInvokeWithFixedPrimitiveParams(org.objectweb.asm.ClassWriter cw,
                                                      java.lang.reflect.Method method)


Copyright © ${year} The Codehaus. All Rights Reserved.