diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-06 20:16:15 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-06 20:16:15 +0900 |
| commit | eab754d859e3db64380b42b7c913f180986f6125 (patch) | |
| tree | 39480116bf01f69e15908a6585a41845b2e0fb61 | |
| parent | 9002fb7946b867f4431bed4149dd5da08d1cca71 (diff) | |
| parent | c4f14755a78e68b405c58b2dfbc6447dcec8588c (diff) | |
| download | mruby-eab754d859e3db64380b42b7c913f180986f6125.tar.gz mruby-eab754d859e3db64380b42b7c913f180986f6125.zip | |
Merge pull request #2021 from take-cheeze/count_objects_total
Always increment `total` field of `os_count_struct` in callback.
| -rw-r--r-- | mrbgems/mruby-objectspace/src/mruby_objectspace.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-objectspace/test/objectspace.rb | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c index 9871663fb..7d3b0b74e 100644 --- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c +++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c @@ -15,12 +15,13 @@ os_count_object_type(mrb_state *mrb, struct RBasic *obj, void *data) struct os_count_struct *obj_count; obj_count = (struct os_count_struct*)data; + obj_count->total++; + if (is_dead(mrb, obj)) { obj_count->freed++; } else { obj_count->counts[obj->tt]++; - obj_count->total++; } } diff --git a/mrbgems/mruby-objectspace/test/objectspace.rb b/mrbgems/mruby-objectspace/test/objectspace.rb index e70650e84..f792c165d 100644 --- a/mrbgems/mruby-objectspace/test/objectspace.rb +++ b/mrbgems/mruby-objectspace/test/objectspace.rb @@ -10,6 +10,8 @@ assert('ObjectSpace.count_objects') do assert_true(h.has_key?(:FREE)) assert_true(h.has_key?(:T_FIBER)) if Object.const_defined? :Fiber + assert_equal(h[:TOTAL] * 2, h.values.reduce(:+)) + h = ObjectSpace.count_objects assert_kind_of(Hash, h) assert_true(h.keys.all? {|x| x.is_a?(Symbol) || x.is_a?(Integer) }) |
