From ed47a0ec808fc89ac3ce17185419911fee5c7eb4 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 26 Mar 2016 01:52:00 +0000 Subject: numeric.c: Fixnum predicts * numeric.c (FIXNUM_{POSITIVE,NEGATIVE,ZERO}_P): predict macros only for Fixnum. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54295 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ numeric.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 268d8d09a1..f06378e08e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Mar 26 10:51:58 2016 Nobuyoshi Nakada + + * numeric.c (FIXNUM_{POSITIVE,NEGATIVE,ZERO}_P): predict macros + only for Fixnum. + Sat Mar 26 06:34:24 2016 NARUSE, Yui * localeinit.c (rb_locale_charmap_index): fix prototype. diff --git a/numeric.c b/numeric.c index d251742bbc..844c0d3bc1 100644 --- a/numeric.c +++ b/numeric.c @@ -173,6 +173,10 @@ compare_with_zero(VALUE num, ID mid) return r; } +#define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0)) +#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0) +#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0)) + static inline int positive_int_p(VALUE num) { @@ -180,7 +184,7 @@ positive_int_p(VALUE num) if (FIXNUM_P(num)) { if (method_basic_p(rb_cFixnum)) - return (SIGNED_VALUE)num > 0; + return FIXNUM_POSITIVE_P(num); } else if (RB_TYPE_P(num, T_BIGNUM)) { if (method_basic_p(rb_cBignum)) @@ -196,7 +200,7 @@ negative_int_p(VALUE num) if (FIXNUM_P(num)) { if (method_basic_p(rb_cFixnum)) - return (SIGNED_VALUE)num < 0; + return FIXNUM_NEGATIVE_P(num); } else if (RB_TYPE_P(num, T_BIGNUM)) { if (method_basic_p(rb_cBignum)) -- cgit v1.2.3