diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-14 04:06:15 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-14 04:06:15 +0000 |
commit | c0af2a164105834634fbea386b8e41496dcdc99c (patch) | |
tree | 009aa2f20c9680f9d17e7d66378a5ad294c4742a /complex.c | |
parent | 608ad21517e29cacdbf2a0932489ecb2313a867e (diff) |
complex.c: optimize
* complex.c (f_negative_p): use rb_num_negative_p instead of funcall.
* complex.c (f_kind_of_p, f_numeric_p): cast down to int because
rb_obj_is_kind_of is safe.
* complex.c (f_signbit, f_tpositive_p): remove f_boolcast.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r-- | complex.c | 23 |
1 files changed, 12 insertions, 11 deletions
@@ -177,12 +177,12 @@ fun2(expt) fun2(fdiv) fun2(quo) -inline static VALUE +inline static int f_negative_p(VALUE x) { if (FIXNUM_P(x)) - return f_boolcast(FIXNUM_NEGATIVE_P(x)); - return rb_funcall(x, '<', 1, ZERO); + return FIXNUM_NEGATIVE_P(x); + return rb_num_negative_p(x); } #define f_positive_p(x) (!f_negative_p(x)) @@ -202,13 +202,13 @@ f_zero_p(VALUE x) #define f_nonzero_p(x) (!f_zero_p(x)) -inline static VALUE +inline static int f_kind_of_p(VALUE x, VALUE c) { - return rb_obj_is_kind_of(x, c); + return (int)rb_obj_is_kind_of(x, c); } -inline static VALUE +inline static int k_numeric_p(VALUE x) { return f_kind_of_p(x, rb_cNumeric); @@ -1209,26 +1209,27 @@ nucomp_eql_p(VALUE self, VALUE other) return Qfalse; } -inline static VALUE +inline static int f_signbit(VALUE x) { if (RB_FLOAT_TYPE_P(x)) { double f = RFLOAT_VALUE(x); - return f_boolcast(!isnan(f) && signbit(f)); + return !isnan(f) && signbit(f); } return f_negative_p(x); } -inline static VALUE +inline static int f_tpositive_p(VALUE x) { - return f_boolcast(!f_signbit(x)); + return !f_signbit(x); } static VALUE f_format(VALUE self, VALUE (*func)(VALUE)) { - VALUE s, impos; + VALUE s; + int impos; get_dat1(self); |