summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-objectspace
diff options
context:
space:
mode:
authorRory OConnell <[email protected]>2020-07-13 15:58:50 -0700
committerRory OConnell <[email protected]>2020-07-13 15:58:50 -0700
commite7bd7d0eaf677f62d86f27c2e9a917faa5a7d419 (patch)
treed7455eeb10c5fed2b5c422af8d237d8314ff63de /mrbgems/mruby-objectspace
parent41e3220539ff0150bb09968b243ce6ed96b6fe0e (diff)
downloadmruby-e7bd7d0eaf677f62d86f27c2e9a917faa5a7d419.tar.gz
mruby-e7bd7d0eaf677f62d86f27c2e9a917faa5a7d419.zip
Use size of hash's table in calculation
Diffstat (limited to 'mrbgems/mruby-objectspace')
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
index 791bf68fe..b0a3e0d89 100644
--- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c
+++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
@@ -262,8 +262,12 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj, mrb_bool recurse, mrb_int* t
break;
}
case MRB_TT_HASH: {
- /*struct htable* htable = RHASH_TBL(obj);
- * Need htable & segment struct defs */
+ (*t) += mrb_objspace_page_slot_size() +
+ os_memsize_of_hash_table(obj);
+ if(recurse) {
+ os_memsize_of_object(mrb, mrb_hash_keys(mrb, obj), recurse, t);
+ os_memsize_of_object(mrb, mrb_hash_values(mrb, obj), recurse, t);
+ }
break;
}
case MRB_TT_ARRAY: {
@@ -325,7 +329,6 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj, mrb_bool recurse, mrb_int* t
case MRB_TT_FREE:
case MRB_TT_UNDEF:
case MRB_TT_ENV:
- case MRB_TT_ISTRUCT:
/* never used, silences compiler warning
* not having a default: clause lets the compiler tell us when there is a new
* TT not accounted for */