diff options
-rw-r--r-- | ext/objspace/objspace.c | 9 | ||||
-rw-r--r-- | object.c | 2 |
2 files changed, 3 insertions, 8 deletions
diff --git a/ext/objspace/objspace.c b/ext/objspace/objspace.c index d33dfeb80a..bd80e540cf 100644 --- a/ext/objspace/objspace.c +++ b/ext/objspace/objspace.c @@ -61,14 +61,7 @@ total_i(VALUE v, void *ptr) { struct total_data *data = (struct total_data *)ptr; - switch (BUILTIN_TYPE(v)) { - case T_NONE: - case T_IMEMO: - case T_ICLASS: - case T_NODE: - case T_ZOMBIE: - return; - default: + if (!rb_objspace_internal_object_p(v)) { if (data->klass == 0 || rb_obj_is_kind_of(v, data->klass)) { data->total += rb_obj_memsize_of(v); } @@ -791,6 +791,8 @@ rb_obj_is_kind_of(VALUE obj, VALUE c) { VALUE cl = CLASS_OF(obj); + RUBY_ASSERT(cl); + // Note: YJIT needs this function to never allocate and never raise when // `c` is a class or a module. c = class_or_module_required(c); |