summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorcremno <[email protected]>2014-01-02 06:36:29 +0100
committercremno <[email protected]>2014-01-02 06:36:29 +0100
commit09bb30870b43feb967740842c3046372327b796b (patch)
tree1a22be2bab4c9f46d48e361bc78a9f933c8d5e02 /src
parente8dd8180baae425c893e1054368a4c32c99ea805 (diff)
downloadmruby-09bb30870b43feb967740842c3046372327b796b.tar.gz
mruby-09bb30870b43feb967740842c3046372327b796b.zip
tiny word boxing optimization
Diffstat (limited to 'src')
-rw-r--r--src/array.c4
-rw-r--r--src/codegen.c2
-rw-r--r--src/object.c6
-rw-r--r--src/range.c10
-rw-r--r--src/string.c2
5 files changed, 10 insertions, 14 deletions
diff --git a/src/array.c b/src/array.c
index 0fb257d7e..00a992d87 100644
--- a/src/array.c
+++ b/src/array.c
@@ -318,7 +318,7 @@ mrb_ary_cmp(mrb_state *mrb, mrb_value ary1)
for (i=0; i<len; i++) {
mrb_value v = ary_elt(ary2, i);
r = mrb_funcall_argv(mrb, ary_elt(ary1, i), cmp, 1, &v);
- if (mrb_type(r) != MRB_TT_FIXNUM || mrb_fixnum(r) != 0) return r;
+ if (!mrb_fixnum_p(r) || mrb_fixnum(r) != 0) return r;
}
}
len = a1->len - a2->len;
@@ -697,7 +697,7 @@ mrb_ary_aget(mrb_state *mrb, mrb_value self)
return mrb_ary_ref(mrb, self, index);
case 1:
- if (mrb_type(argv[0]) != MRB_TT_FIXNUM) {
+ if (!mrb_fixnum_p(argv[0])) {
mrb_raise(mrb, E_TYPE_ERROR, "expected Fixnum");
}
if (index < 0) index += a->len;
diff --git a/src/codegen.c b/src/codegen.c
index 4f7eaea79..169371492 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -421,7 +421,7 @@ new_lit(codegen_scope *s, mrb_value val)
case MRB_TT_FIXNUM:
for (i=0; i<s->irep->plen; i++) {
pv = &s->irep->pool[i];
- if (mrb_type(*pv) != MRB_TT_FIXNUM) continue;
+ if (!mrb_fixnum_p(*pv)) continue;
if (mrb_fixnum(*pv) == mrb_fixnum(val)) return i;
}
break;
diff --git a/src/object.c b/src/object.c
index 529c168ee..daa76a03f 100644
--- a/src/object.c
+++ b/src/object.c
@@ -326,9 +326,9 @@ mrb_check_to_integer(mrb_state *mrb, mrb_value val, const char *method)
{
mrb_value v;
- if (mrb_type(val) == MRB_TT_FIXNUM) return val;
+ if (mrb_fixnum_p(val)) return val;
v = convert_type(mrb, val, "Integer", method, FALSE);
- if (mrb_nil_p(v) || mrb_type(v) != MRB_TT_FIXNUM) {
+ if (mrb_nil_p(v) || !mrb_fixnum_p(v)) {
return mrb_nil_value();
}
return v;
@@ -404,7 +404,7 @@ mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t)
if (mrb_nil_p(x)) {
etype = "nil";
}
- else if (mrb_type(x) == MRB_TT_FIXNUM) {
+ else if (mrb_fixnum_p(x)) {
etype = "Fixnum";
}
else if (mrb_type(x) == MRB_TT_SYMBOL) {
diff --git a/src/range.c b/src/range.c
index a27ced4cb..0eacc83d5 100644
--- a/src/range.c
+++ b/src/range.c
@@ -176,7 +176,7 @@ r_le(mrb_state *mrb, mrb_value a, mrb_value b)
mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */
/* output :a < b => -1, a = b => 0, a > b => +1 */
- if (mrb_type(r) == MRB_TT_FIXNUM) {
+ if (mrb_fixnum_p(r)) {
mrb_int c = mrb_fixnum(r);
if (c == 0 || c == -1) return TRUE;
}
@@ -190,11 +190,7 @@ r_gt(mrb_state *mrb, mrb_value a, mrb_value b)
mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b);
/* output :a < b => -1, a = b => 0, a > b => +1 */
- if (mrb_type(r) == MRB_TT_FIXNUM) {
- if (mrb_fixnum(r) == 1) return TRUE;
- }
-
- return FALSE;
+ return mrb_fixnum_p(r) && mrb_fixnum(r) == 1;
}
static mrb_bool
@@ -203,7 +199,7 @@ r_ge(mrb_state *mrb, mrb_value a, mrb_value b)
mrb_value r = mrb_funcall(mrb, a, "<=>", 1, b); /* compare result */
/* output :a < b => -1, a = b => 0, a > b => +1 */
- if (mrb_type(r) == MRB_TT_FIXNUM) {
+ if (mrb_fixnum_p(r)) {
mrb_int c = mrb_fixnum(r);
if (c == 0 || c == 1) return TRUE;
}
diff --git a/src/string.c b/src/string.c
index 1c577188e..d00d9423a 100644
--- a/src/string.c
+++ b/src/string.c
@@ -1248,7 +1248,7 @@ mrb_str_include(mrb_state *mrb, mrb_value self)
mrb_bool include_p;
mrb_get_args(mrb, "o", &str2);
- if (mrb_type(str2) == MRB_TT_FIXNUM) {
+ if (mrb_fixnum_p(str2)) {
include_p = (memchr(RSTRING_PTR(self), mrb_fixnum(str2), RSTRING_LEN(self)) != NULL);
}
else {