[前][次][番号順一覧][スレッド一覧]

ruby-changes:59525

From: =E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3 <ko1@a...>
Date: Fri, 27 Dec 2019 14:23:36 +0900 (JST)
Subject: [ruby-changes:59525] f0c02a0949 (master): internal/numeric.h rework

https://git.ruby-lang.org/ruby.git/commit/?id=f0c02a0949

From f0c02a094988f804a339e9180a5e206fa123b902 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?=
 <shyouhei@r...>
Date: Tue, 3 Dec 2019 12:00:49 +0900
Subject: internal/numeric.h rework

Marked MJIT_FUNC_EXPORTED functions as such.  Other changes are rather
cosmetic.

diff --git a/internal/numeric.h b/internal/numeric.h
index c85327e..609b0c5 100644
--- a/internal/numeric.h
+++ b/internal/numeric.h
@@ -9,44 +9,45 @@ https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L9
  *             modify this file, provided that  the conditions mentioned in the
  *             file COPYING are met.  Consult the file for details.
  */
+#include "internal/bignum.h"    /* for BIGNUM_POSITIVE_P */
+#include "internal/bits.h"      /* for RUBY_BIT_ROTL */
 #include "internal/fixnum.h"    /* for FIXNUM_POSITIVE_P */
+#include "internal/vm.h"        /* for rb_method_basic_definition_p */
+#include "ruby/intern.h"        /* for rb_cmperr */
+#include "ruby/ruby.h"          /* for USE_FLONUM */
 
-struct RFloat {
-    struct RBasic basic;
-    double float_value;
-};
-
-#define RFLOAT(obj)  (R_CAST(RFloat)(obj))
-
-/* numeric.c */
-
-#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
-
-#define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
+#define ROUND_TO(mode, even, up, down) \
+    ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : \
+     (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
+#define ROUND_FUNC(mode, name) \
+    ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down)
+#define ROUND_CALL(mode, name, args) \
+    ROUND_TO(mode, name##_half_even args, \
+             name##_half_up args, name##_half_down args)
 
 #ifndef ROUND_DEFAULT
 # define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
 #endif
+
 enum ruby_num_rounding_mode {
     RUBY_NUM_ROUND_HALF_UP,
     RUBY_NUM_ROUND_HALF_EVEN,
     RUBY_NUM_ROUND_HALF_DOWN,
-    RUBY_NUM_ROUND_DEFAULT = ROUND_DEFAULT
+    RUBY_NUM_ROUND_DEFAULT = ROUND_DEFAULT,
 };
-#define ROUND_TO(mode, even, up, down) \
-    ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : \
-     (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
-#define ROUND_FUNC(mode, name) \
-    ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down)
-#define ROUND_CALL(mode, name, args) \
-    ROUND_TO(mode, name##_half_even args, \
-             name##_half_up args, name##_half_down args)
 
+struct RFloat {
+    struct RBasic basic;
+    double float_value;
+};
+
+#define RFLOAT(obj)  (R_CAST(RFloat)(obj))
+
+/* numeric.c */
 int rb_num_to_uint(VALUE val, unsigned int *ret);
 VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
 double ruby_float_step_size(double beg, double end, double unit, int excl);
 int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
-double ruby_float_mod(double x, double y);
 int rb_num_negative_p(VALUE);
 VALUE rb_int_succ(VALUE num);
 VALUE rb_int_uminus(VALUE num);
@@ -61,9 +62,7 @@ VALUE rb_int_idiv(VALUE x, VALUE y); https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L62
 VALUE rb_int_modulo(VALUE x, VALUE y);
 VALUE rb_int2str(VALUE num, int base);
 VALUE rb_fix_plus(VALUE x, VALUE y);
-VALUE rb_fix_aref(VALUE fix, VALUE idx);
 VALUE rb_int_gt(VALUE x, VALUE y);
-int rb_float_cmp(VALUE x, VALUE y);
 VALUE rb_float_gt(VALUE x, VALUE y);
 VALUE rb_int_ge(VALUE x, VALUE y);
 enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
@@ -82,12 +81,49 @@ int rb_int_positive_p(VALUE num); https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L81
 int rb_int_negative_p(VALUE num);
 VALUE rb_num_pow(VALUE x, VALUE y);
 VALUE rb_float_ceil(VALUE num, int ndigits);
+VALUE rb_float_abs(VALUE flt);
+static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
+static inline int rb_num_positive_int_p(VALUE num);
+static inline int rb_num_negative_int_p(VALUE num);
+static inline double rb_float_flonum_value(VALUE v);
+static inline double rb_float_noflonum_value(VALUE v);
+static inline double rb_float_value_inline(VALUE v);
+static inline VALUE rb_float_new_inline(double d);
+static inline bool INT_NEGATIVE_P(VALUE num);
+static inline bool FLOAT_ZERO_P(VALUE num);
+#define rb_float_value rb_float_value_inline
+#define rb_float_new   rb_float_new_inline
 
 RUBY_SYMBOL_EXPORT_BEGIN
 /* numeric.c (export) */
 VALUE rb_int_positive_pow(long x, unsigned long y);
 RUBY_SYMBOL_EXPORT_END
 
+MJIT_SYMBOL_EXPORT_BEGIN
+VALUE rb_flo_div_flo(VALUE x, VALUE y);
+double ruby_float_mod(double x, double y);
+VALUE rb_float_equal(VALUE x, VALUE y);
+int rb_float_cmp(VALUE x, VALUE y);
+VALUE rb_float_eql(VALUE x, VALUE y);
+VALUE rb_fix_aref(VALUE fix, VALUE idx);
+MJIT_SYMBOL_EXPORT_END
+
+static inline bool
+INT_NEGATIVE_P(VALUE num)
+{
+    if (FIXNUM_P(num)) {
+        return FIXNUM_NEGATIVE_P(num);
+    }
+    else {
+        return BIGNUM_NEGATIVE_P(num);
+    }
+}
+
+static inline bool
+FLOAT_ZERO_P(VALUE num)
+{
+    return RFLOAT_VALUE(num) == 0.0;
+}
 
 static inline VALUE
 rb_num_compare_with_zero(VALUE num, ID mid)
@@ -116,7 +152,6 @@ rb_num_positive_int_p(VALUE num) https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L152
     return RTEST(rb_num_compare_with_zero(num, mid));
 }
 
-
 static inline int
 rb_num_negative_int_p(VALUE num)
 {
@@ -133,12 +168,6 @@ rb_num_negative_int_p(VALUE num) https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L168
     return RTEST(rb_num_compare_with_zero(num, mid));
 }
 
-
-VALUE rb_float_abs(VALUE flt);
-VALUE rb_float_equal(VALUE x, VALUE y);
-VALUE rb_float_eql(VALUE x, VALUE y);
-VALUE rb_flo_div_flo(VALUE x, VALUE y);
-
 static inline double
 rb_float_flonum_value(VALUE v)
 {
@@ -163,7 +192,7 @@ rb_float_flonum_value(VALUE v) https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L192
 static inline double
 rb_float_noflonum_value(VALUE v)
 {
-    return ((struct RFloat *)v)->float_value;
+    return RFLOAT(v)->float_value;
 }
 
 static inline double
@@ -205,6 +234,4 @@ rb_float_new_inline(double d) https://github.com/ruby/ruby/blob/trunk/internal/numeric.h#L234
     return rb_float_new_in_heap(d);
 }
 
-#define rb_float_value(v) rb_float_value_inline(v)
-#define rb_float_new(d)   rb_float_new_inline(d)
 #endif /* INTERNAL_NUMERIC_H */
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]