diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-08-26 12:36:10 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-08-26 16:06:02 +0900 |
| commit | 4654de90741db13c2f2eb75afa45237ae4e0f072 (patch) | |
| tree | 9251c2303d5f854956bf05a73d1395c5f8a5b51f /src/etc.c | |
| parent | ba6e12153700f5fac1adccecbc8cc0cc852b47c5 (diff) | |
| download | mruby-4654de90741db13c2f2eb75afa45237ae4e0f072.tar.gz mruby-4654de90741db13c2f2eb75afa45237ae4e0f072.zip | |
etc.c: keep full `float32` with `MRB_64BIT` and `MRB_USE_FLOAT32`.
Diffstat (limited to 'src/etc.c')
| -rw-r--r-- | src/etc.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -162,10 +162,11 @@ mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) v.p = mrb_obj_alloc(mrb, MRB_TT_FLOAT, mrb->float_class); v.fp->f = f; MRB_SET_FROZEN_FLAG(v.bp); -#else -#if defined(MRB_64BIT) && defined(MRB_USE_FLOAT32) +#elif defined(MRB_64BIT) && defined(MRB_USE_FLOAT32) v.w = 0; -#endif + v.f = f; + v.w = ((v.w<<2) & ~3) | 2; +#else v.f = f; v.w = (v.w & ~3) | 2; #endif @@ -180,6 +181,9 @@ mrb_word_boxing_value_float(mrb_value v) union mrb_value_ u; u.value = v; u.w = u.w & ~3; +#if defined(MRB_64BIT) && defined(MRB_USE_FLOAT32) + u.w >>= 2; +#endif return u.f; } #endif |
