Fix heap growth in GC.verify_compaction_references

We should grow by at least gc_params.heap_init_slots, but the previous
calculation was incorrect.
This commit is contained in:
Peter Zhu 2023-06-05 10:54:28 -04:00
parent 1f64301e12
commit c3dc9fcc70

10
gc.c
View File

@ -10846,13 +10846,13 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do
rb_size_pool_t *size_pool = &size_pools[i];
rb_heap_t *heap = SIZE_POOL_EDEN_HEAP(size_pool);
size_t minimum_pages = 0;
if (RTEST(expand_heap)) {
size_t required_pages = growth_slots / size_pool->slot_size;
heap_add_pages(objspace, size_pool, heap, MAX(required_pages, heap->total_pages));
}
else {
heap_add_pages(objspace, size_pool, heap, heap->total_pages);
int multiple = size_pool->slot_size / BASE_SLOT_SIZE;
minimum_pages = growth_slots * multiple / HEAP_PAGE_OBJ_LIMIT;
}
heap_add_pages(objspace, size_pool, heap, MAX(minimum_pages, heap->total_pages));
}
}