зеркало из https://github.com/github/ruby.git
[Bug #18014] Fix rb_gc_force_recycle unmark before sweep
If we force recycle an object before the page is swept, we should clear it in the mark bitmap. If we don't clear it in the bitmap, then during sweeping we won't account for this free slot so the `free_slots` count of the page will be incorrect.
This commit is contained in:
Родитель
3e7a7fb28a
Коммит
119697f61e
2
gc.c
2
gc.c
|
@ -8671,7 +8671,7 @@ rb_gc_force_recycle(VALUE obj)
|
|||
}
|
||||
else {
|
||||
#endif
|
||||
if (is_old || !GET_HEAP_PAGE(obj)->flags.before_sweep) {
|
||||
if (is_old || GET_HEAP_PAGE(obj)->flags.before_sweep) {
|
||||
CLEAR_IN_BITMAP(GET_HEAP_MARK_BITS(obj), obj);
|
||||
}
|
||||
CLEAR_IN_BITMAP(GET_HEAP_MARKING_BITS(obj), obj);
|
||||
|
|
Загрузка…
Ссылка в новой задаче