summaryrefslogtreecommitdiff
path: root/rational.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-01-10 13:37:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-01-10 13:37:34 +0000
commit14b3dc1ec45861724fcfa1ae44fabe2cc7f03bf9 (patch)
treec5be1783b4f7deaec740b827356f160b2260f029 /rational.c
parent1dd076c557efbe44deb7aac108e9dbda2a3e227b (diff)
rational.c: f_idiv
* rational.c (f_idiv): call rb_int_idiv directly if possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rational.c')
-rw-r--r--rational.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/rational.c b/rational.c
index f6c49fe516..212ad07faa 100644
--- a/rational.c
+++ b/rational.c
@@ -53,13 +53,6 @@ f_##n(VALUE x)\
return rb_funcall(x, id_##n, 0);\
}
-#define fun2(n) \
-inline static VALUE \
-f_##n(VALUE x, VALUE y)\
-{\
- return rb_funcall(x, id_##n, 1, y);\
-}
-
inline static VALUE
f_add(VALUE x, VALUE y)
{
@@ -154,7 +147,13 @@ f_eqeq_p(VALUE x, VALUE y)
return (int)rb_equal(x, y);
}
-fun2(idiv)
+inline static VALUE
+f_idiv(VALUE x, VALUE y)
+{
+ if (RB_INTEGER_TYPE_P(x))
+ return rb_int_idiv(x, y);
+ return rb_funcall(x, id_idiv, 1, y);
+}
#define f_expt10(x) rb_int_pow(INT2FIX(10), x)