private boolean cmpIsBuiltin(ThreadContext context) { return sites(context).cmp.isBuiltin(metaClass); }
private boolean cmpIsBuiltin(ThreadContext context) { return sites(context).cmp.isBuiltin(metaClass); }
@JIT public static IRubyObject callOptimizedAref(ThreadContext context, IRubyObject caller, IRubyObject target, RubyString keyStr, CallSite site) { if (target instanceof RubyHash && ((CachingCallSite) site).isBuiltin(target.getMetaClass())) { // call directly with cached frozen string return ((RubyHash) target).op_aref(context, keyStr); } return site.call(context, caller, target, keyStr.strDup(context.runtime)); }
@JIT public static IRubyObject callOptimizedAref(ThreadContext context, IRubyObject caller, IRubyObject target, RubyString keyStr, CallSite site) { if (target instanceof RubyHash && ((CachingCallSite) site).isBuiltin(target.getMetaClass())) { // call directly with cached frozen string return ((RubyHash) target).op_aref(context, keyStr); } return site.call(context, caller, target, keyStr.strDup(context.runtime)); }
/** rb_num2dbl and NUM2DBL * */ public static double num2dbl(ThreadContext context, IRubyObject arg) { switch (((RubyBasicObject) arg).getNativeClassIndex()) { case FLOAT: return ((RubyFloat) arg).getDoubleValue(); case FIXNUM: if (context.sites.Fixnum.to_f.isBuiltin(getMetaClass(arg))) return ((RubyFixnum) arg).getDoubleValue(); break; case BIGNUM: if (context.sites.Bignum.to_f.isBuiltin(getMetaClass(arg))) return ((RubyBignum) arg).getDoubleValue(); break; case RATIONAL: if (context.sites.Rational.to_f.isBuiltin(getMetaClass(arg))) return ((RubyRational) arg).getDoubleValue(); break; case STRING: case NIL: case TRUE: case FALSE: throw context.runtime.newTypeError(str(context.runtime, "can't convert ", arg.inspect(), " into Float")); } IRubyObject val = TypeConverter.convertToType(arg, context.runtime.getFloat(), "to_f"); return ((RubyFloat) val).getDoubleValue(); }
/** rb_num2dbl and NUM2DBL * */ public static double num2dbl(ThreadContext context, IRubyObject arg) { switch (((RubyBasicObject) arg).getNativeClassIndex()) { case FLOAT: return ((RubyFloat) arg).getDoubleValue(); case FIXNUM: if (context.sites.Fixnum.to_f.isBuiltin(getMetaClass(arg))) return ((RubyFixnum) arg).getDoubleValue(); break; case BIGNUM: if (context.sites.Bignum.to_f.isBuiltin(getMetaClass(arg))) return ((RubyBignum) arg).getDoubleValue(); break; case RATIONAL: if (context.sites.Rational.to_f.isBuiltin(getMetaClass(arg))) return ((RubyRational) arg).getDoubleValue(); break; case STRING: case NIL: case TRUE: case FALSE: throw context.runtime.newTypeError(str(context.runtime, "can't convert ", arg.inspect(), " into Float")); } IRubyObject val = TypeConverter.convertToType(arg, context.runtime.getFloat(), "to_f"); return ((RubyFloat) val).getDoubleValue(); }
if (sites.dig_array.isBuiltin(obj.getMetaClass())) { return ((RubyArray) obj).dig(context, args, idx); if (sites.dig_hash.isBuiltin(obj.getMetaClass())) { return ((RubyHash) obj).dig(context, args, idx); if (sites.dig_struct.isBuiltin(obj.getMetaClass())) { return ((RubyStruct) obj).dig(context, args, idx);
if (sites.dig_array.isBuiltin(obj.getMetaClass())) { return ((RubyArray) obj).dig(context, args, idx); if (sites.dig_hash.isBuiltin(obj.getMetaClass())) { return ((RubyHash) obj).dig(context, args, idx); if (sites.dig_struct.isBuiltin(obj.getMetaClass())) { return ((RubyStruct) obj).dig(context, args, idx);