Revert "Pin values in the finalizer table"

If an object has a finalizer flag set on it, prevent it from moving.

This partially reverts commit 1a9dd31910.
This commit is contained in:
Aaron Patterson 2020-09-22 08:57:48 -07:00
Родитель df14c758fc
Коммит 8b41e9b6e7
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 953170BCB4FFAFC6
1 изменённых файлов: 6 добавлений и 0 удалений

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

@ -7860,6 +7860,11 @@ gc_is_moveable_obj(rb_objspace_t *objspace, VALUE obj)
case T_RATIONAL:
case T_NODE:
case T_CLASS:
if (FL_TEST(obj, FL_FINALIZE)) {
if (st_is_member(finalizer_table, obj)) {
return FALSE;
}
}
return RVALUE_MARKED(obj) && !RVALUE_PINNED(obj);
default:
@ -8757,6 +8762,7 @@ gc_update_references(rb_objspace_t * objspace)
gc_update_tbl_refs(objspace, objspace->obj_to_id_tbl);
gc_update_table_refs(objspace, objspace->id_to_obj_tbl);
gc_update_table_refs(objspace, global_symbols.str_sym);
gc_update_table_refs(objspace, finalizer_table);
}
static VALUE type_sym(size_t type);