From 84ec555ecd4b51767b695d0367d4dbe321359f30 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 6 Jul 2012 19:50:44 +0900 Subject: range optimization from @monaka; close #348 --- src/range.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/range.c b/src/range.c index 859bb277e..34ca79a0d 100644 --- a/src/range.c +++ b/src/range.c @@ -185,14 +185,14 @@ mrb_range_eq(mrb_state *mrb, mrb_value range) static int r_le(mrb_state *mrb, mrb_value a, mrb_value b) { - //int c; mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */ /* output :a < b => -1, a = b => 0, a > b => +1 */ - if (mrb_nil_p(r)) return FALSE; + if (mrb_type(r) == MRB_TT_FIXNUM) { + int c = mrb_fixnum(r); + if (c == 0 || c == -1) return TRUE; + } - if (mrb_obj_equal(mrb, r, mrb_fixnum_value(0))) return TRUE; - if (mrb_obj_equal(mrb, r, mrb_fixnum_value(-1))) return TRUE; return FALSE; } -- cgit v1.2.3