@Override public final IRubyObject callVarargs(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject... args) { switch (args.length) { case 0: return call(context, caller, self); case 1: return call(context, caller, self, args[0]); case 2: return call(context, caller, self, args[0], args[1]); case 3: return call(context, caller, self, args[0], args[1], args[2]); default: return call(context, caller, self, args); } }
@Override public final IRubyObject callIter(ThreadContext context, IRubyObject caller, IRubyObject self, Block block) { try { return call(context, caller, self, block); } finally { block.escape(); } }
@Override public IRubyObject callIter(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject arg1, Block block) { try { return call(context, caller, self, arg1, block); } finally { block.escape(); } }
@Override public final IRubyObject callIter(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, Block block) { try { return call(context, caller, self, arg1, arg2, arg3, block); } finally { block.escape(); } }
@Override public final IRubyObject callIter(ThreadContext context, IRubyObject caller, IRubyObject self, Block block) { try { return call(context, caller, self, block); } finally { block.escape(); } }
/** rb_io_addstr * */ @JRubyMethod(name = "<<", required = 1) public IRubyObject op_append(ThreadContext context, IRubyObject anObject) { // Claims conversion is done via 'to_s' in docs. sites(context).write.call(context, this, this, anObject); return this; }
/** * The default toString method is just a wrapper that calls the * Ruby "to_s" method. This will raise if it is not actually a Ruby String. * * @param context thread context this is executing on. * @return the string. */ public RubyString toRubyString(ThreadContext context) { return sites(context).to_s.call(context, this, this).convertToString(); }
private static void setBinmodeIfPossible(ThreadContext context, IRubyObject io) { if (sites(context).respond_to_binmode.respondsTo(context, io, io)) { sites(context).binmode.call(context, io, io); } }
private static void setBinmodeIfPossible(ThreadContext context, IRubyObject io) { if (sites(context).respond_to_binmode.respondsTo(context, io, io)) { sites(context).binmode.call(context, io, io); } }
@Override public IRubyObject isNegative(ThreadContext context) { Ruby runtime = context.runtime; CachingCallSite op_lt_site = sites(context).basic_op_lt; if (op_lt_site.retrieveCache(metaClass).method.isBuiltin()) { return runtime.newBoolean(value.signum() < 0); } return op_lt_site.call(context, this, this, RubyFixnum.zero(runtime)); }
@Override public IRubyObject isPositive(ThreadContext context) { Ruby runtime = context.runtime; CachingCallSite op_gt_site = sites(context).basic_op_gt; if (op_gt_site.retrieveCache(metaClass).method.isBuiltin()) { return runtime.newBoolean(value.signum() > 0); } return op_gt_site.call(context, this, this, RubyFixnum.zero(runtime)); }
/** f_gt_p * */ public static boolean f_gt_p(ThreadContext context, IRubyObject x, IRubyObject y) { if (x instanceof RubyFixnum && y instanceof RubyFixnum) { return ((RubyFixnum)x).getLongValue() > ((RubyFixnum)y).getLongValue(); } return sites(context).op_gt.call(context, x, x, y).isTrue(); }
/** f_lt_p * */ public static boolean f_lt_p(ThreadContext context, IRubyObject x, IRubyObject y) { if (x instanceof RubyFixnum && y instanceof RubyFixnum) { return ((RubyFixnum)x).getLongValue() < ((RubyFixnum)y).getLongValue(); } return sites(context).op_lt.call(context, x, x, y).isTrue(); }
/** f_negative_p * */ public static boolean f_negative_p(ThreadContext context, IRubyObject x) { if (x instanceof RubyInteger) return ((RubyInteger) x).signum() == -1; return sites(context).op_lt.call(context, x, x, RubyFixnum.zero(context.runtime)).isTrue(); }
/** f_gt_p * */ public static boolean f_gt_p(ThreadContext context, IRubyObject x, IRubyObject y) { if (x instanceof RubyFixnum && y instanceof RubyFixnum) { return ((RubyFixnum)x).getLongValue() > ((RubyFixnum)y).getLongValue(); } return sites(context).op_gt.call(context, x, x, y).isTrue(); }
/** f_lt_p * */ public static boolean f_lt_p(ThreadContext context, IRubyObject x, IRubyObject y) { if (x instanceof RubyFixnum && y instanceof RubyFixnum) { return ((RubyFixnum)x).getLongValue() < ((RubyFixnum)y).getLongValue(); } return sites(context).op_lt.call(context, x, x, y).isTrue(); }
@Override public IRubyObject isNegative(ThreadContext context) { Ruby runtime = context.runtime; CachingCallSite op_lt_site = sites(context).basic_op_lt; if (op_lt_site.retrieveCache(metaClass).method.isBuiltin()) { return runtime.newBoolean(value < 0); } return op_lt_site.call(context, this, this, RubyFixnum.zero(runtime)); }
public static IRubyObject putc(ThreadContext context, IRubyObject maybeIO, IRubyObject object) { if (maybeIO instanceof RubyIO) { ((RubyIO) maybeIO).putc(context, object); } else { byte c = RubyNumeric.num2chr(object); IRubyObject str = RubyString.newStringShared(context.runtime, RubyInteger.singleCharByteList(c)); sites(context).write.call(context, maybeIO, maybeIO, str); } return object; }
@Override public IRubyObject isPositive(ThreadContext context) { Ruby runtime = context.runtime; CachingCallSite op_gt_site = sites(context).basic_op_gt; if (op_gt_site.retrieveCache(metaClass).method.isBuiltin()) { return runtime.newBoolean(value > 0); } return op_gt_site.call(context, this, this, RubyFixnum.zero(runtime)); }
@JRubyMethod(required = 1) public IRubyObject putc(ThreadContext context, IRubyObject ch) { IRubyObject str; if (ch instanceof RubyString) { str = ((RubyString) ch).substr(context.runtime, 0, 1); } else { str = RubyString.newStringShared(context.runtime, RubyInteger.singleCharByteList(RubyNumeric.num2chr(ch))); } sites(context).write.call(context, this, this, str); return ch; }