@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, Block block) { MethodHandle target1 = ensureTarget1(); if (target1 == null) { return call(context, self, clazz, name, new IRubyObject[]{arg0}, block); } try { return (IRubyObject) target1.invokeExact(context, self, clazz, name, arg0, block); } catch (Throwable t) { Helpers.throwException(t); return null; } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, Block block) { MethodHandle target1 = ensureTarget1(); if (target1 == null) { return call(context, self, clazz, name, new IRubyObject[]{arg0}, block); } try { return (IRubyObject) target1.invokeExact(context, self, clazz, name, arg0, block); } catch (Throwable t) { Helpers.throwException(t); return null; } }
public MethodHandle getHandle(int arity) { switch (arity) { case -1: return ensureTarget4(); case 0: return ensureTarget0(); case 1: return ensureTarget1(); case 2: return ensureTarget2(); case 3: return ensureTarget3(); default: return null; } }
public MethodHandle getHandle(int arity) { switch (arity) { case -1: return ensureTarget4(); case 0: return ensureTarget0(); case 1: return ensureTarget1(); case 2: return ensureTarget2(); case 3: return ensureTarget3(); default: return null; } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { try { MethodHandle target4 = ensureTarget4(); if (target4 != null) { Arity.checkArgumentCount(context, args.length, min, max); return (IRubyObject) target4.invokeExact(context, self, clazz, name, args, block); } else { int arity = Arity.checkArgumentCount(context, args.length, min, max); switch (args.length) { case 0: return (IRubyObject) ensureTarget0().invokeExact(context, self, clazz, name, block); case 1: return (IRubyObject) ensureTarget1().invokeExact(context, self, clazz, name, args[0], block); case 2: return (IRubyObject) ensureTarget2().invokeExact(context, self, clazz, name, args[0], args[1], block); case 3: return (IRubyObject) ensureTarget3().invokeExact(context, self, clazz, name, args[0], args[1], args[2], block); default: throw new RuntimeException("invalid arity for call: " + arity); } } } catch (Throwable t) { Helpers.throwException(t); return null; } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { try { MethodHandle target4 = ensureTarget4(); if (target4 != null) { Arity.checkArgumentCount(context, args.length, min, max); return (IRubyObject) target4.invokeExact(context, self, clazz, name, args, block); } else { int arity = Arity.checkArgumentCount(context, args.length, min, max); switch (args.length) { case 0: return (IRubyObject) ensureTarget0().invokeExact(context, self, clazz, name, block); case 1: return (IRubyObject) ensureTarget1().invokeExact(context, self, clazz, name, args[0], block); case 2: return (IRubyObject) ensureTarget2().invokeExact(context, self, clazz, name, args[0], args[1], block); case 3: return (IRubyObject) ensureTarget3().invokeExact(context, self, clazz, name, args[0], args[1], args[2], block); default: throw new RuntimeException("invalid arity for call: " + arity); } } } catch (Throwable t) { Helpers.throwException(t); return null; } }