summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-20 04:28:41 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-20 04:28:41 +0000
commit30da8b833c1cbfd4df8e008f685a522a2b1ff4c2 (patch)
treec723ee100a4895b1d6eae0efc84709497333231a
parent1ab760bb51f7b51bf00ad8a6eb04a3fa5304385c (diff)
* 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
-rw-r--r--ChangeLog6
-rw-r--r--gc.c27
2 files changed, 18 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index f4c20a85db..fd360a4802 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Mar 20 12:38:36 2015 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (obj_info): obj_info() can receive internal objects.
+
+ * gc.c (check_rvalue_consistency): obj_info() returns const char *.
+
Fri Mar 20 12:14:37 2015 Koichi Sasada <ko1@atdot.net>
* gc.c (obj_info): show class name and T_DATA type_name.
diff --git a/gc.c b/gc.c
index 13b7536acc..13390b30a3 100644
--- a/gc.c
+++ b/gc.c
@@ -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));
}
}