diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-20 04:28:41 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-20 04:28:41 +0000 |
commit | 30da8b833c1cbfd4df8e008f685a522a2b1ff4c2 (patch) | |
tree | c723ee100a4895b1d6eae0efc84709497333231a /gc.c | |
parent | 1ab760bb51f7b51bf00ad8a6eb04a3fa5304385c (diff) | |
download | ruby-30da8b833c1cbfd4df8e008f685a522a2b1ff4c2.tar.gz |
* gc.c (obj_info): obj_info() can receive internal objects.
* gc.c (check_rvalue_consistency): obj_info() returns const char *.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 27 |
1 files changed, 12 insertions, 15 deletions
@@ -998,8 +998,8 @@ check_rvalue_consistency(const VALUE obj) const int marking_bit = RVALUE_MARKING_BITMAP(obj) != 0, remembered_bit = marking_bit; const int age = RVALUE_FLAGS_AGE(RBASIC(obj)->flags); - if (BUILTIN_TYPE(obj) == T_NONE) rb_bug("check_rvalue_consistency: %p is T_NONE", obj_info(obj)); - if (BUILTIN_TYPE(obj) == T_ZOMBIE) rb_bug("check_rvalue_consistency: %p is T_ZOMBIE", obj_info(obj)); + if (BUILTIN_TYPE(obj) == T_NONE) rb_bug("check_rvalue_consistency: %s is T_NONE", obj_info(obj)); + if (BUILTIN_TYPE(obj) == T_ZOMBIE) rb_bug("check_rvalue_consistency: %s is T_ZOMBIE", obj_info(obj)); obj_memsize_of((VALUE)obj, FALSE); /* check generation @@ -8817,19 +8817,16 @@ obj_info(VALUE obj) C(RVALUE_WB_UNPROTECTED_BITMAP(obj), "U"), obj_type_name(obj)); - switch (type) { - case T_NODE: - case T_IMEMO: - break; - default: - if (RBASIC(obj)->klass == 0) { - snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (internal)", buff); - } - else { - VALUE class_path = rb_class_path_cached(RBASIC(obj)->klass); - if (!NIL_P(class_path)) { - snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (%s)", buff, RSTRING_PTR(class_path)); - } + if (internal_object_p(obj)) { + /* ignore */ + } + else if (RBASIC(obj)->klass == 0) { + snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (temporary internal)", buff); + } + else { + VALUE class_path = rb_class_path_cached(RBASIC(obj)->klass); + if (!NIL_P(class_path)) { + snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (%s)", buff, RSTRING_PTR(class_path)); } } |