summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-24 22:10:13 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-24 22:10:13 +0000
commit93a460f7742dd72b6c3f7667cde69417010c2f76 (patch)
tree3a3b0f91224c31994104e36db784bb8dc83fac42 /gc.c
parent04deaf5d516ba1b26d0e656aa029b913888a54f4 (diff)
* gc.c (obj_info, method_type_name): show method type name in a string
instead of a number. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/gc.c b/gc.c
index d018190de0..2cd8c410e9 100644
--- a/gc.c
+++ b/gc.c
@@ -8838,6 +8838,28 @@ obj_type_name(VALUE obj)
}
#if RGENGC_OBJ_INFO
+
+static const char *
+method_type_name(rb_method_type_t type)
+{
+ switch (type) {
+ case VM_METHOD_TYPE_ISEQ: return "iseq";
+ case VM_METHOD_TYPE_ATTRSET: return "attrest";
+ case VM_METHOD_TYPE_IVAR: return "ivar";
+ case VM_METHOD_TYPE_BMETHOD: return "bmethod";
+ case VM_METHOD_TYPE_ALIAS: return "alias";
+ case VM_METHOD_TYPE_REFINED: return "refined";
+ case VM_METHOD_TYPE_CFUNC: return "cfunc";
+ case VM_METHOD_TYPE_ZSUPER: return "zsuper";
+ case VM_METHOD_TYPE_MISSING: return "missing";
+ case VM_METHOD_TYPE_OPTIMIZED: return "optimized";
+ case VM_METHOD_TYPE_UNDEF: return "undef";
+ case VM_METHOD_TYPE_NOTIMPLEMENTED: return "notimplemented";
+ }
+ rb_bug("method_type_name: unreachable (type: %d)", type);
+}
+
+
#define OBJ_INFO_BUFFERS_NUM 10
#define OBJ_INFO_BUFFERS_SIZE 0x100
static int obj_info_buffers_index = 0;
@@ -8944,8 +8966,8 @@ obj_info(VALUE obj)
snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s %s", buff, imemo_name);
if (imemo_type(obj) == imemo_ment) {
const rb_method_entry_t *me = &RANY(obj)->as.imemo.ment;
- snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (called_id: %s, type: %d, alias: %d, class: %s)", buff,
- rb_id2name(me->called_id), me->def->type, me->def->alias_count, obj_info(me->klass));
+ snprintf(buff, OBJ_INFO_BUFFERS_SIZE, "%s (called_id: %s, type: %s, alias: %d, class: %s)", buff,
+ rb_id2name(me->called_id), method_type_name(me->def->type), me->def->alias_count, obj_info(me->klass));
}
}
default: