Show whether object is garbage in rb_raw_obj_info()

When using `rp(obj)` for debugging during development, it may be
useful to know that an object is soon to be swept. Add a new letter to
the object dump for whether the object is garbage. It's easy to forget
about lazy sweep.
This commit is contained in:
Alan Wu 2021-12-20 16:13:34 -05:00 коммит произвёл GitHub
Родитель 8b1b4e384f
Коммит 39cf0b5314
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 2 добавлений и 1 удалений

3
gc.c
Просмотреть файл

@ -13093,13 +13093,14 @@ rb_raw_obj_info(char *buff, const int buff_size, VALUE obj)
const int age = RVALUE_FLAGS_AGE(RBASIC(obj)->flags);
if (is_pointer_to_heap(&rb_objspace, (void *)obj)) {
APPENDF((BUFF_ARGS, "%p [%d%s%s%s%s%s] %s ",
APPENDF((BUFF_ARGS, "%p [%d%s%s%s%s%s%s] %s ",
(void *)obj, age,
C(RVALUE_UNCOLLECTIBLE_BITMAP(obj), "L"),
C(RVALUE_MARK_BITMAP(obj), "M"),
C(RVALUE_PIN_BITMAP(obj), "P"),
C(RVALUE_MARKING_BITMAP(obj), "R"),
C(RVALUE_WB_UNPROTECTED_BITMAP(obj), "U"),
C(rb_objspace_garbage_object_p(obj), "G"),
obj_type_name(obj)));
}
else {