summaryrefslogtreecommitdiffhomepage
path: root/src/range.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-07-06 19:50:44 +0900
committerYukihiro Matsumoto <[email protected]>2012-07-06 19:50:44 +0900
commit84ec555ecd4b51767b695d0367d4dbe321359f30 (patch)
treea6242a35d94019b09d6fa864319c73f1761dd6f7 /src/range.c
parentdfaa5c9506455b594392a61bf6aae101ecbc1887 (diff)
downloadmruby-84ec555ecd4b51767b695d0367d4dbe321359f30.tar.gz
mruby-84ec555ecd4b51767b695d0367d4dbe321359f30.zip
range optimization from @monaka; close #348
Diffstat (limited to 'src/range.c')
-rw-r--r--src/range.c8
1 files 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;
}