From 03302c3f30edb18b73ecdf1ba2fb05f672fa5ea2 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 30 Nov 2015 19:54:07 -0700 Subject: [PATCH] repair an assertion in the GC --- racket/src/racket/gc2/newgc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/gc2/newgc.c b/racket/src/racket/gc2/newgc.c index 04c77559b9..14683e8f75 100644 --- a/racket/src/racket/gc2/newgc.c +++ b/racket/src/racket/gc2/newgc.c @@ -3701,6 +3701,9 @@ static void page_newly_marked_on(NewGC *gc, mpage *page, int is_a_master_page, i { if (inc_gen1) { GC_ASSERT(!page->inc_marked_on); + /* If this page isn't already marked as old, it must be a medium page whose + generation will be updated in the clean-up phase */ + GC_ASSERT((page->generation >= AGE_GEN_1) || (page->size_class == SIZE_CLASS_MED_PAGE)); page->inc_marked_on = 1; page->inc_modified_next = gc->inc_modified_next; gc->inc_modified_next = page; @@ -5416,7 +5419,9 @@ static void incremental_repair_pages(NewGC *gc, int fuel) gc->inc_repair_next = page->inc_modified_next; if (!gc->inc_repair_next) gc->inc_repair_next = gc->inc_modified_next; - GC_ASSERT(page->generation >= AGE_GEN_1); + /* If this page isn't already marked as old, it must be a medium page whose + generation will be updated in the clean-up phase */ + GC_ASSERT((page->generation >= AGE_GEN_1) || (page->size_class == SIZE_CLASS_MED_PAGE)); if (page->generation == AGE_VACATED) { /* skip */ } else if (page->size_class >= SIZE_CLASS_BIG_PAGE) {