summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-03-21 08:29:05 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-03-21 08:29:05 +0900
commita6d4477a09ae9ca2af97bdcecd25911da5a75a7c (patch)
treec41dcd7cb4170008e91cbb9f77fb2ae449af6bfe
parente21f293de5d32af9349cef174df9f1e536adec16 (diff)
downloadmruby-a6d4477a09ae9ca2af97bdcecd25911da5a75a7c.tar.gz
mruby-a6d4477a09ae9ca2af97bdcecd25911da5a75a7c.zip
memsize.c: handle `MRB_TT_RATIONAL` and `MRB_TT_COMPLEX`.
-rw-r--r--mrbgems/mruby-os-memsize/src/memsize.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/mrbgems/mruby-os-memsize/src/memsize.c b/mrbgems/mruby-os-memsize/src/memsize.c
index abfd94268..9947512cf 100644
--- a/mrbgems/mruby-os-memsize/src/memsize.c
+++ b/mrbgems/mruby-os-memsize/src/memsize.c
@@ -126,8 +126,25 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj)
case MRB_TT_INTEGER:
if (mrb_immediate_p(obj))
break;
+ case MRB_TT_RATIONAL:
+#if defined(MRB_USE_RATIONAL)
+#if defined(MRB_INT64) && defined(MRB_32BIT)
+ size += sizeof(mrb_int)*2;
+#endif
+ size += mrb_objspace_page_slot_size();
+#endif
+ break;
+
+ case MRB_TT_COMPLEX:
+#if defined(MRB_USE_COMPLEX)
+#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32)
+ size += sizeof(mrb_float)*2;
+#endif
+ size += mrb_objspace_page_slot_size();
+#endif
+ break;
case MRB_TT_DATA:
- case MRB_TT_ISTRUCT:
+ case MRB_TT_ISTRUCT:
size += mrb_objspace_page_slot_size();
break;
/* zero heap size types.