summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-01-04 20:31:05 +0900
committerKOBAYASHI Shuji <[email protected]>2019-01-04 20:31:05 +0900
commitb30ca87bd07a29a2dddc4960ce80f767ff9552ca (patch)
tree824f117bb1dc35ac89ac537dd2191093e514b84a
parent1c574b065d09d37da0673a9e0289e2e018413a80 (diff)
downloadmruby-b30ca87bd07a29a2dddc4960ce80f767ff9552ca.tar.gz
mruby-b30ca87bd07a29a2dddc4960ce80f767ff9552ca.zip
Integrate mrblib/float.rb into src/numeric.c
- Avoid hack for `MRB_WITHOUT_FLOAT` in build scripts - Avoid runtime dispatch for `MRB_WITHOUT_FLOAT`
-rw-r--r--mrblib/float.rb9
-rw-r--r--mrblib/mrblib.rake3
-rw-r--r--src/numeric.c7
3 files changed, 5 insertions, 14 deletions
diff --git a/mrblib/float.rb b/mrblib/float.rb
deleted file mode 100644
index 421b8d851..000000000
--- a/mrblib/float.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-##
-# Float
-#
-# ISO 15.2.9
-class Float
- # mruby special - since mruby integers may be upgraded to floats,
- # floats should be compatible to integers.
- include Integral
-end if Object.const_defined?(:Float)
diff --git a/mrblib/mrblib.rake b/mrblib/mrblib.rake
index 6895d4252..e96decb27 100644
--- a/mrblib/mrblib.rake
+++ b/mrblib/mrblib.rake
@@ -8,9 +8,6 @@ MRuby.each_target do
file objfile("#{current_build_dir}/mrblib") => "#{current_build_dir}/mrblib.c"
file "#{current_build_dir}/mrblib.c" => [mrbcfile, __FILE__] + Dir.glob("#{current_dir}/*.rb").sort do |t|
_, _, *rbfiles = t.prerequisites
- if self.cc.defines.flatten.include?("MRB_WITHOUT_FLOAT")
- rbfiles.delete("#{current_dir}/float.rb")
- end
FileUtils.mkdir_p File.dirname(t.name)
open(t.name, 'w') do |f|
_pp "GEN", "*.rb", "#{t.name.relative_path}"
diff --git a/src/numeric.c b/src/numeric.c
index 077ae30aa..311bb4a38 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -1487,11 +1487,13 @@ flo_plus(mrb_state *mrb, mrb_value x)
void
mrb_init_numeric(mrb_state *mrb)
{
- struct RClass *numeric, *integer, *fixnum;
+ struct RClass *numeric, *integer, *fixnum, *integral;
#ifndef MRB_WITHOUT_FLOAT
struct RClass *fl;
#endif
+ integral = mrb_define_module(mrb, "Integral");
+
/* Numeric Class */
numeric = mrb_define_class(mrb, "Numeric", mrb->object_class); /* 15.2.7 */
@@ -1578,6 +1580,7 @@ mrb_init_numeric(mrb_state *mrb)
#ifdef NAN
mrb_define_const(mrb, fl, "NAN", mrb_float_value(mrb, NAN));
#endif
+
+ mrb_include_module(mrb, fl, integral);
#endif
- mrb_define_module(mrb, "Integral");
}