diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-19 10:30:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-19 10:37:10 +0900 |
| commit | d3184e4a6d8b85a22dd46f4e2909492a0a08cab1 (patch) | |
| tree | b45f9be65a970d80d4b60401e44d053f3b78b394 /src/gc.c | |
| parent | 08f9d5bab5092fe1193dd100765079e3e4d746b9 (diff) | |
| download | mruby-d3184e4a6d8b85a22dd46f4e2909492a0a08cab1.tar.gz mruby-d3184e4a6d8b85a22dd46f4e2909492a0a08cab1.zip | |
complex.c: overhaul complex operators.
- define `MRB_TT_COMPLEX`
- change object structure (`struct RComplex`)
- add memory management for `MRB_TT_COMPLEX`
- avoid operator overloading as much as possible
- as a result, performance improved a log
- should work with and without `Rational` defined
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -903,15 +903,22 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) } break; -#if defined(MRB_INT64) && defined(MRB_32BIT) -#ifdef MRB_USE_RATIONAL +#if defined(MRB_USE_RATIONAL) && defined(MRB_INT64) && defined(MRB_32BIT) case MRB_TT_RATIONAL: { struct RData *o = (struct RData*)obj; - mrb_free(mrb, obj->iv_tbl); + mrb_free(mrb, o->iv); } break; #endif + +#if defined(MRB_USE_COMPLEX) && defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) + case MRB_TT_COMPLEX: + { + struct RData *o = (struct RData*)obj; + mrb_free(mrb, o->iv); + } + break; #endif default: |
