Commit e896c1ce authored by Masaki Muranaka's avatar Masaki Muranaka

Range optimization. similar to #348

parent 8268ba27
...@@ -199,27 +199,28 @@ r_le(mrb_state *mrb, mrb_value a, mrb_value b) ...@@ -199,27 +199,28 @@ r_le(mrb_state *mrb, mrb_value a, mrb_value b)
static int static int
r_gt(mrb_state *mrb, mrb_value a, mrb_value b) r_gt(mrb_state *mrb, mrb_value a, mrb_value b)
{ {
//int c;
mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b);
/* output :a < b => -1, a = b => 0, a > b => +1 */ /* 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 == 1) return TRUE;
}
if (mrb_obj_equal(mrb, r, mrb_fixnum_value(1))) return TRUE;
return FALSE; return FALSE;
} }
static int static int
r_ge(mrb_state *mrb, mrb_value a, mrb_value b) r_ge(mrb_state *mrb, mrb_value a, mrb_value b)
{ {
//int c;
mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */ mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */
/* output :a < b => -1, a = b => 0, a > b => +1 */ /* 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; return FALSE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment