GC: move minor work to clean-up phase instead of setup
This commit is contained in:
parent
7eee429705
commit
9372862ee2
|
@ -4180,7 +4180,6 @@ static void mark_backpointers(NewGC *gc)
|
||||||
mmu_write_unprotect_page(gc->mmu, work->addr, real_page_size(work));
|
mmu_write_unprotect_page(gc->mmu, work->addr, real_page_size(work));
|
||||||
}
|
}
|
||||||
work->marked_from = 1;
|
work->marked_from = 1;
|
||||||
work->previous_size = PREFIX_SIZE;
|
|
||||||
if (work->size_class) {
|
if (work->size_class) {
|
||||||
/* must be a big page */
|
/* must be a big page */
|
||||||
work->size_class = 3;
|
work->size_class = 3;
|
||||||
|
@ -4207,9 +4206,6 @@ static void mark_backpointers(NewGC *gc)
|
||||||
work->previous_size = PREFIX_SIZE;
|
work->previous_size = PREFIX_SIZE;
|
||||||
traversed++;
|
traversed++;
|
||||||
} else {
|
} else {
|
||||||
GCDEBUG((DEBUGOUTF,"Setting previous_size on %p to %i\n", work,
|
|
||||||
work->size));
|
|
||||||
work->previous_size = work->size;
|
|
||||||
skipped++;
|
skipped++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4760,6 +4756,7 @@ static void clean_up_heap(NewGC *gc)
|
||||||
GCVERBOSEPAGE(gc, "clean_up_heap BIG PAGE ALIVE", work);
|
GCVERBOSEPAGE(gc, "clean_up_heap BIG PAGE ALIVE", work);
|
||||||
work->marked_on = 0;
|
work->marked_on = 0;
|
||||||
work->marked_from = 0;
|
work->marked_from = 0;
|
||||||
|
work->previous_size = work->size;
|
||||||
memory_in_use += work->size;
|
memory_in_use += work->size;
|
||||||
prev = work;
|
prev = work;
|
||||||
}
|
}
|
||||||
|
@ -4770,6 +4767,7 @@ static void clean_up_heap(NewGC *gc)
|
||||||
for (work = gc->gen1_pages[i]; work; work = work->next) {
|
for (work = gc->gen1_pages[i]; work; work = work->next) {
|
||||||
work->marked_on = 0;
|
work->marked_on = 0;
|
||||||
work->marked_from = 0;
|
work->marked_from = 0;
|
||||||
|
work->previous_size = work->size;
|
||||||
memory_in_use += work->size;
|
memory_in_use += work->size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user