From 63bd0417eed9fd04f990d011e1050325db8cd87a Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 17 Jun 2018 02:41:26 +0000 Subject: [PATCH] share Float 0 * complex.c (RFLOAT_0): share the 0.0 object on non-flonum platforms. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- complex.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/complex.c b/complex.c index 2b452e23c0..71c24a0024 100644 --- a/complex.c +++ b/complex.c @@ -20,7 +20,11 @@ #define ZERO INT2FIX(0) #define ONE INT2FIX(1) #define TWO INT2FIX(2) +#if USE_FLONUM #define RFLOAT_0 DBL2NUM(0) +#else +static VALUE RFLOAT_0; +#endif #if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \ !defined(signbit) extern int signbit(double); @@ -2271,6 +2275,10 @@ Init_Complex(void) rb_define_const(rb_cComplex, "I", f_complex_new_bang2(rb_cComplex, ZERO, ONE)); +#if !USE_FLONUM + rb_gc_register_mark_object(RFLOAT_0 = DBL2NUM(0.0)); +#endif + rb_provide("complex.so"); /* for backward compatibility */ }