public class InvokeDynamicMethodFactory extends InvocationMethodFactory
MethodFactory
,
HandleMethod
Modifier and Type | Field and Description |
---|---|
static com.headius.invokebinder.Signature[] |
SPECIFIC_ARITY_SIGNATURES |
static com.headius.invokebinder.Signature |
VARIABLE_ARITY_SIGNATURE |
ARGS_INDEX, BLOCK_INDEX, CLASS_INDEX, classLoader, NAME_INDEX, RECEIVER_INDEX, syncObject, THIS_INDEX, THREADCONTEXT_INDEX
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, ASM7_EXPERIMENTAL, 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, V_PREVIEW_EXPERIMENTAL, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V9
Constructor and Description |
---|
InvokeDynamicMethodFactory(java.lang.ClassLoader classLoader) |
Modifier and Type | Method and Description |
---|---|
static java.util.concurrent.Callable<java.lang.invoke.MethodHandle> |
adaptHandle(java.lang.invoke.MethodHandle method,
Ruby runtime,
int actualRequired,
int required,
int optional,
boolean rest,
java.lang.String rubyName,
java.lang.Class declaringClass,
boolean isStatic,
boolean hasContext,
boolean hasBlock,
boolean frame,
RubyModule implementationClass) |
static java.lang.invoke.MethodHandle |
finishAdapting(com.headius.invokebinder.SmartBinder binder,
RubyModule implementationClass,
java.lang.String rubyName,
java.lang.invoke.MethodHandle method,
java.lang.Class declaringClass,
Ruby runtime,
boolean isStatic,
boolean frame) |
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.
|
static com.headius.invokebinder.SmartBinder |
getBinder(int specific,
boolean b1,
boolean b2,
boolean b3) |
static com.headius.invokebinder.SmartBinder |
preAdaptHandle(int specificArity,
boolean isStatic,
boolean hasContext,
boolean hasBlock) |
constructJavaMethod, endClass, getAnnotatedMethodClass, getPostMethod
createFactory
public static final com.headius.invokebinder.Signature VARIABLE_ARITY_SIGNATURE
public static final com.headius.invokebinder.Signature[] SPECIFIC_ARITY_SIGNATURES
public InvokeDynamicMethodFactory(java.lang.ClassLoader classLoader)
public DynamicMethod getAnnotatedMethod(RubyModule implementationClass, java.util.List<JavaMethodDescriptor> descs, java.lang.String name)
InvocationMethodFactory
getAnnotatedMethod
in class InvocationMethodFactory
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 static com.headius.invokebinder.SmartBinder preAdaptHandle(int specificArity, boolean isStatic, boolean hasContext, boolean hasBlock)
public static java.lang.invoke.MethodHandle finishAdapting(com.headius.invokebinder.SmartBinder binder, RubyModule implementationClass, java.lang.String rubyName, java.lang.invoke.MethodHandle method, java.lang.Class declaringClass, Ruby runtime, boolean isStatic, boolean frame)
public static java.util.concurrent.Callable<java.lang.invoke.MethodHandle> adaptHandle(java.lang.invoke.MethodHandle method, Ruby runtime, int actualRequired, int required, int optional, boolean rest, java.lang.String rubyName, java.lang.Class declaringClass, boolean isStatic, boolean hasContext, boolean hasBlock, boolean frame, RubyModule implementationClass)
public DynamicMethod getAnnotatedMethod(RubyModule implementationClass, JavaMethodDescriptor desc, java.lang.String name)
getAnnotatedMethod
in class InvocationMethodFactory
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 static com.headius.invokebinder.SmartBinder getBinder(int specific, boolean b1, boolean b2, boolean b3)
Copyright © 2001-2019 JRuby. All Rights Reserved.