diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-18 16:27:35 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-19 10:37:10 +0900 |
| commit | 08f9d5bab5092fe1193dd100765079e3e4d746b9 (patch) | |
| tree | 627588dd204f5a7c24ea79ab17076f3eeab818eb /src/gc.c | |
| parent | eb070303080b24458d3740424aa7aa8a45fa49eb (diff) | |
| download | mruby-08f9d5bab5092fe1193dd100765079e3e4d746b9.tar.gz mruby-08f9d5bab5092fe1193dd100765079e3e4d746b9.zip | |
rational.c: overhaul rational operators.
- define `MRB_TT_RATIONAL`
- change object structure (`struct RRational`)
- add memory management for `MRB_TT_RATIONAL`
- avoid operator overloading as much as possible
- implement division overloading in C
- as a result, performance improved a lot
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -903,6 +903,17 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) } break; +#if defined(MRB_INT64) && defined(MRB_32BIT) +#ifdef MRB_USE_RATIONAL + case MRB_TT_RATIONAL: + { + struct RData *o = (struct RData*)obj; + mrb_free(mrb, obj->iv_tbl); + } + break; +#endif +#endif + default: break; } |
