summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gc.c b/gc.c
index 4eaceef807..0309559481 100644
--- a/gc.c
+++ b/gc.c
@@ -2204,13 +2204,14 @@ heap_prepare(rb_objspace_t *objspace, rb_size_pool_t *size_pool, rb_heap_t *heap
{
GC_ASSERT(heap->free_pages == NULL);
- if (is_lazy_sweeping(objspace)) {
- gc_sweep_continue(objspace, size_pool, heap);
- }
- else if (is_incremental_marking(objspace)) {
+ if (is_incremental_marking(objspace)) {
gc_marks_continue(objspace, size_pool, heap);
}
+ if (heap->free_pages == NULL && is_lazy_sweeping(objspace)) {
+ gc_sweep_continue(objspace, size_pool, heap);
+ }
+
if (heap->free_pages == NULL &&
(will_be_incremental_marking(objspace) || heap_increment(objspace, size_pool, heap) == FALSE) &&
gc_start(objspace, GPR_FLAG_NEWOBJ) == FALSE) {