summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/objspace/objspace.c23
-rw-r--r--test/objspace/test_objspace.rb10
2 files changed, 11 insertions, 22 deletions
diff --git a/ext/objspace/objspace.c b/ext/objspace/objspace.c
index ba138e6244..ee76367b44 100644
--- a/ext/objspace/objspace.c
+++ b/ext/objspace/objspace.c
@@ -203,7 +203,7 @@ type2sym(enum ruby_value_type i)
*
* Note that this information is incomplete. You need to deal with
* this information as only a *HINT*. Especially, total size of
- * T_DATA may not right size.
+ * T_DATA may be wrong.
*
* It returns a hash as:
* {:TOTAL=>1461154, :T_CLASS=>158280, :T_MODULE=>20672, :T_STRING=>527249, ...}
@@ -232,13 +232,6 @@ count_objects_size(int argc, VALUE *argv, VALUE os)
rb_objspace_each_objects(cos_i, &counts[0]);
- if (hash == Qnil) {
- hash = rb_hash_new();
- }
- else if (!RHASH_EMPTY_P(hash)) {
- st_foreach(RHASH_TBL(hash), set_zero_i, hash);
- }
-
for (i = 0; i <= T_MASK; i++) {
if (counts[i]) {
VALUE type = type2sym(i);
@@ -313,13 +306,6 @@ count_symbols(int argc, VALUE *argv, VALUE os)
size_t immortal_symbols = rb_sym_immortal_count();
rb_objspace_each_objects(cs_i, &dynamic_counts);
- if (hash == Qnil) {
- hash = rb_hash_new();
- }
- else if (!RHASH_EMPTY_P(hash)) {
- st_foreach(RHASH_TBL(hash), set_zero_i, hash);
- }
-
rb_hash_aset(hash, ID2SYM(rb_intern("mortal_dynamic_symbol")), SIZET2NUM(dynamic_counts.mortal));
rb_hash_aset(hash, ID2SYM(rb_intern("immortal_dynamic_symbol")), SIZET2NUM(dynamic_counts.immortal));
rb_hash_aset(hash, ID2SYM(rb_intern("immortal_static_symbol")), SIZET2NUM(immortal_symbols - dynamic_counts.immortal));
@@ -380,13 +366,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
rb_objspace_each_objects(cn_i, &nodes[0]);
- if (hash == Qnil) {
- hash = rb_hash_new();
- }
- else if (!RHASH_EMPTY_P(hash)) {
- st_foreach(RHASH_TBL(hash), set_zero_i, hash);
- }
-
for (i=0; i<NODE_LAST; i++) {
if (nodes[i] != 0) {
VALUE node;
diff --git a/test/objspace/test_objspace.rb b/test/objspace/test_objspace.rb
index c5c8147f5f..9c706f2736 100644
--- a/test/objspace/test_objspace.rb
+++ b/test/objspace/test_objspace.rb
@@ -61,9 +61,19 @@ class TestObjSpace < Test::Unit::TestCase
res = ObjectSpace.count_objects_size
assert_not_empty(res)
assert_operator(res[:TOTAL], :>, 0)
+ end
+
+ def test_count_objects_size_with_hash
arg = {}
ObjectSpace.count_objects_size(arg)
assert_not_empty(arg)
+ arg = {:TOTAL => 1 }
+ ObjectSpace.count_objects_size(arg)
+ assert_not_empty(arg)
+ end
+
+ def test_count_objects_size_with_wrong_type
+ assert_raise(TypeError) { ObjectSpace.count_objects_size(0) }
end
def test_count_nodes