public class InvocationMethodFactory extends MethodFactory implements org.objectweb.asm.Opcodes
MethodFactory
Modifier and Type | Field and Description |
---|---|
static int |
ARGS_INDEX
The lvar index of the method args on the call
|
static int |
BLOCK_INDEX
The lvar index of the passed-in Block on the call
|
static int |
CLASS_INDEX
The lvar index of the RubyClass being invoked against
|
protected ClassDefiningJRubyClassLoader |
classLoader
The classloader to use for code loading
|
static int |
NAME_INDEX
The lvar index method name being invoked
|
static int |
RECEIVER_INDEX
The lvar index of the method-receiving object
|
protected java.lang.Object |
syncObject
An object to sync against when loading classes, to avoid dups
|
static int |
THIS_INDEX
The lvar index of "this"
|
static int |
THREADCONTEXT_INDEX
The lvar index of the passed-in ThreadContext
|
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, 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, V9
Constructor and Description |
---|
InvocationMethodFactory(java.lang.ClassLoader classLoader)
Construct a new InvocationMethodFactory using the specified classloader
to load code.
|
Modifier and Type | Method and Description |
---|---|
JavaMethod |
constructJavaMethod(RubyModule implementationClass,
JavaMethodDescriptor desc,
java.lang.String name,
java.lang.Class c) |
protected java.lang.Class |
endClass(org.objectweb.asm.ClassWriter cw,
java.lang.String name) |
DynamicMethod |
getAnnotatedMethod(RubyModule implementationClass,
JavaMethodDescriptor desc,
java.lang.String name)
Use code generation to provide a method handle based on an annotated Java
method.
|
DynamicMethod |
getAnnotatedMethod(RubyModule implementationClass,
java.util.List<JavaMethodDescriptor> descs,
java.lang.String name)
Use code generation to provide a method handle based on an annotated Java
method.
|
java.lang.Class |
getAnnotatedMethodClass(java.util.List<JavaMethodDescriptor> descs)
Use code generation to provide a method handle based on an annotated Java
method.
|
static java.lang.String |
getPostMethod(CallConfiguration callConfig) |
createFactory
public static final int THIS_INDEX
public static final int THREADCONTEXT_INDEX
public static final int RECEIVER_INDEX
public static final int CLASS_INDEX
public static final int NAME_INDEX
public static final int ARGS_INDEX
public static final int BLOCK_INDEX
protected final ClassDefiningJRubyClassLoader classLoader
protected final java.lang.Object syncObject
public InvocationMethodFactory(java.lang.ClassLoader classLoader)
classLoader
- The classloader to use, or to wrap if it is not a
JRubyClassLoader instance.public DynamicMethod getAnnotatedMethod(RubyModule implementationClass, java.util.List<JavaMethodDescriptor> descs, java.lang.String name)
getAnnotatedMethod
in class MethodFactory
implementationClass
- The target class or module on which the method
will be bound.MethodFactory.getAnnotatedMethod(org.jruby.RubyModule, java.util.List<org.jruby.anno.JavaMethodDescriptor>, java.lang.String)
public java.lang.Class getAnnotatedMethodClass(java.util.List<JavaMethodDescriptor> descs)
public DynamicMethod getAnnotatedMethod(RubyModule implementationClass, JavaMethodDescriptor desc, java.lang.String name)
getAnnotatedMethod
in class MethodFactory
implementationClass
- The target class or module on which the method
will be bound.desc
- A JavaMethodDescriptor describing the target methodMethodFactory.getAnnotatedMethod(org.jruby.RubyModule, java.util.List<org.jruby.anno.JavaMethodDescriptor>, java.lang.String)
public JavaMethod constructJavaMethod(RubyModule implementationClass, JavaMethodDescriptor desc, java.lang.String name, java.lang.Class c) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchMethodException
public static java.lang.String getPostMethod(CallConfiguration callConfig)
protected java.lang.Class endClass(org.objectweb.asm.ClassWriter cw, java.lang.String name)
Copyright © 2001-2018 JRuby. All Rights Reserved.