numeric.c, rational.c: refactor by using FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P

* numeric.c (num_zero_p, fix_divide, fix_mod, fix_divmod): refactor by using
  FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P.

* rational.c (INT_NEGATIVE_P, INT_ZERO_P): ditto.

* internal.h: move FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P from numeric.c

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mrkn 2016-11-11 14:39:25 +00:00
parent 8ee8c5eeb6
commit f64a53462e
3 changed files with 10 additions and 8 deletions

View File

@ -1136,6 +1136,10 @@ VALUE rb_math_sqrt(VALUE);
void Init_newline(void);
/* numeric.c */
#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
#ifndef ROUND_DEFAULT
# define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_EVEN
#endif

View File

@ -262,8 +262,6 @@ compare_with_zero(VALUE num, ID mid)
}
#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
int_pos_p(VALUE num)
@ -784,7 +782,7 @@ static VALUE
num_zero_p(VALUE num)
{
if (FIXNUM_P(num)) {
if (FIX2LONG(num) == 0) {
if (FIXNUM_ZERO_P(num)) {
return Qtrue;
}
}
@ -3608,7 +3606,7 @@ static VALUE
fix_divide(VALUE x, VALUE y, ID op)
{
if (FIXNUM_P(y)) {
if (FIX2LONG(y) == 0) rb_num_zerodiv();
if (FIXNUM_ZERO_P(y)) rb_num_zerodiv();
return rb_fix_div_fix(x, y);
}
else if (RB_TYPE_P(y, T_BIGNUM)) {
@ -3699,7 +3697,7 @@ static VALUE
fix_mod(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
if (FIX2LONG(y) == 0) rb_num_zerodiv();
if (FIXNUM_ZERO_P(y)) rb_num_zerodiv();
return rb_fix_mod_fix(x, y);
}
else if (RB_TYPE_P(y, T_BIGNUM)) {
@ -3772,7 +3770,7 @@ fix_divmod(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
VALUE div, mod;
if (FIX2LONG(y) == 0) rb_num_zerodiv();
if (FIXNUM_ZERO_P(y)) rb_num_zerodiv();
rb_fix_divmod_fix(x, y, &div, &mod);
return rb_assoc_new(div, mod);
}

View File

@ -27,8 +27,8 @@
#define GMP_GCD_DIGITS 1
#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? ((SIGNED_VALUE)(x) < 0) : BIGNUM_NEGATIVE_P(x))
#define INT_ZERO_P(x) (FIXNUM_P(x) ? (FIX2LONG(x) == 0) : rb_bigzero_p(x))
#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
#define INT_ZERO_P(x) (FIXNUM_P(x) ? FIXNUM_ZERO_P(x) : rb_bigzero_p(x))
VALUE rb_cRational;