diff options
| -rw-r--r-- | build_config/no-float.rb | 24 | ||||
| -rw-r--r-- | mrblib/numeric.rb | 2 | ||||
| -rw-r--r-- | src/codedump.c | 2 | ||||
| -rw-r--r-- | src/dump.c | 2 | ||||
| -rw-r--r-- | src/load.c | 4 | ||||
| -rw-r--r-- | src/numeric.c | 2 |
6 files changed, 33 insertions, 3 deletions
diff --git a/build_config/no-float.rb b/build_config/no-float.rb new file mode 100644 index 000000000..57cca1688 --- /dev/null +++ b/build_config/no-float.rb @@ -0,0 +1,24 @@ +MRuby::Build.new("host") do |conf| + # load specific toolchain settings + toolchain :gcc + conf.gem :core => "mruby-bin-mrbc" +end + +# Define cross build settings +MRuby::CrossBuild.new('no-float') do |conf| + toolchain :gcc + + # include the GEM box + conf.compilers.each do |c| + c.defines << "MRB_NO_FLOAT" + end + + conf.gem :core => "mruby-bin-mruby" + conf.gem :core => "mruby-test" + + conf.test_runner.command = 'env' + + conf.enable_debug +# conf.enable_bintest + conf.enable_test +end diff --git a/mrblib/numeric.rb b/mrblib/numeric.rb index e28d63324..1bce9c204 100644 --- a/mrblib/numeric.rb +++ b/mrblib/numeric.rb @@ -185,4 +185,4 @@ class Float end self end -end +end if Object.const_defined?(:Float) diff --git a/src/codedump.c b/src/codedump.c index fd376c20b..4f793b753 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -141,7 +141,9 @@ codedump(mrb_state *mrb, const mrb_irep *irep) op_loadl: switch (irep->pool[b].tt) { case IREP_TT_FLOAT: +#ifndef MRB_NO_FLOAT printf("OP_LOADL\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f); +#endif break; case IREP_TT_INT32: printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); diff --git a/src/dump.c b/src/dump.c index 76d9fe1bc..a79df597b 100644 --- a/src/dump.c +++ b/src/dump.c @@ -964,12 +964,14 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); break; case IREP_TT_FLOAT: +#ifndef MRB_NO_FLOAT if (p->u.f == 0) { fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); } else { fprintf(fp, "{IREP_TT_FLOAT, {.f=" MRB_FLOAT_FMT "}},\n", p->u.f); } +#endif break; } } diff --git a/src/load.c b/src/load.c index 2489f8e04..0bd7399ee 100644 --- a/src/load.c +++ b/src/load.c @@ -649,10 +649,12 @@ load_irep(mrb_state *mrb, mrb_irep *irep, mrbc_context *c) MRB_API mrb_value mrb_load_irep_cxt(mrb_state *mrb, const uint8_t *bin, mrbc_context *c) { - struct RData *irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); + struct RData *irep_obj; mrb_irep *irep = mrb_read_irep(mrb, bin); mrb_value ret; + if (!irep) return mrb_undef_value(); + irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); irep_obj->data = irep; mrb_irep_incref(mrb, irep); ret = load_irep(mrb, irep, c); diff --git a/src/numeric.c b/src/numeric.c index a16b57dc9..ab39bd463 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1697,7 +1697,7 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method(mrb, fl, "eql?", flo_eql, MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */ mrb_define_method(mrb, fl, "to_s", flo_to_s, MRB_ARGS_NONE()); /* 15.2.9.3.16(x) */ - mrb_define_method(mrb, fl, "inspect", flo_to_s , MRB_ARGS_NONE()); + mrb_define_method(mrb, fl, "inspect", flo_to_s, MRB_ARGS_NONE()); mrb_define_method(mrb, fl, "nan?", flo_nan_p, MRB_ARGS_NONE()); #ifdef INFINITY |
