repair an assertion in the GC

This commit is contained in:
Matthew Flatt 2015-11-30 19:54:07 -07:00
parent 8363144818
commit 03302c3f30

View File

@ -3701,6 +3701,9 @@ static void page_newly_marked_on(NewGC *gc, mpage *page, int is_a_master_page, i
{ {
if (inc_gen1) { if (inc_gen1) {
GC_ASSERT(!page->inc_marked_on); 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_marked_on = 1;
page->inc_modified_next = gc->inc_modified_next; page->inc_modified_next = gc->inc_modified_next;
gc->inc_modified_next = page; 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; gc->inc_repair_next = page->inc_modified_next;
if (!gc->inc_repair_next) if (!gc->inc_repair_next)
gc->inc_repair_next = gc->inc_modified_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) { if (page->generation == AGE_VACATED) {
/* skip */ /* skip */
} else if (page->size_class >= SIZE_CLASS_BIG_PAGE) { } else if (page->size_class >= SIZE_CLASS_BIG_PAGE) {