From ce35f121872f5a7b3b0690f692792f52c554966d Mon Sep 17 00:00:00 2001 From: mrkn Date: Sat, 12 Nov 2016 11:51:51 +0000 Subject: rational.c: optimize Float#{numerator,denominator} * rational.c (float_{numerator,denominator}): optimize Float#{numerator,denominator}. Author: Tadashi Saito git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- rational.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'rational.c') diff --git a/rational.c b/rational.c index 1e40841bee..67752ff961 100644 --- a/rational.c +++ b/rational.c @@ -1924,6 +1924,7 @@ integer_denominator(VALUE self) return INT2FIX(1); } +static VALUE float_to_r(VALUE self); /* * call-seq: * flo.numerator -> integer @@ -1940,7 +1941,7 @@ float_numerator(VALUE self) double d = RFLOAT_VALUE(self); if (isinf(d) || isnan(d)) return self; - return rb_call_super(0, 0); + return nurat_numerator(float_to_r(self)); } /* @@ -1958,7 +1959,7 @@ float_denominator(VALUE self) double d = RFLOAT_VALUE(self); if (isinf(d) || isnan(d)) return INT2FIX(1); - return rb_call_super(0, 0); + return nurat_denominator(float_to_r(self)); } /* -- cgit v1.2.3