diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-01-10 13:37:34 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-01-10 13:37:34 +0000 |
commit | 14b3dc1ec45861724fcfa1ae44fabe2cc7f03bf9 (patch) | |
tree | c5be1783b4f7deaec740b827356f160b2260f029 /rational.c | |
parent | 1dd076c557efbe44deb7aac108e9dbda2a3e227b (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.c | 15 |
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) |