diff options
-rw-r--r-- | gc.c | 14 |
1 files changed, 6 insertions, 8 deletions
@@ -5702,16 +5702,14 @@ gc_mark_children(rb_objspace_t *objspace, VALUE obj) { const VALUE * const ptr = ROBJECT_IVPTR(obj); - if (ptr) { - uint32_t i, len = ROBJECT_NUMIV(obj); - for (i = 0; i < len; i++) { - gc_mark(objspace, ptr[i]); - } + uint32_t i, len = ROBJECT_NUMIV(obj); + for (i = 0; i < len; i++) { + gc_mark(objspace, ptr[i]); + } - if (LIKELY(during_gc) && + if (LIKELY(during_gc) && ROBJ_TRANSIENT_P(obj)) { - rb_transient_heap_mark(obj, ptr); - } + rb_transient_heap_mark(obj, ptr); } } break; |