Cleaned up clean_up_heap
svn: r12282
This commit is contained in:
parent
7e56ab9d40
commit
615003c4e8
|
@ -2234,46 +2234,42 @@ inline static void gen0_free_big_pages() {
|
||||||
|
|
||||||
static void clean_up_heap(void)
|
static void clean_up_heap(void)
|
||||||
{
|
{
|
||||||
struct mpage *work, *prev;
|
|
||||||
int i;
|
int i;
|
||||||
|
size_t memory_in_use = 0;
|
||||||
NewGC *gc = GC;
|
NewGC *gc = GC;
|
||||||
|
|
||||||
gc->memory_in_use = 0;
|
|
||||||
|
|
||||||
gen0_free_big_pages();
|
gen0_free_big_pages();
|
||||||
|
|
||||||
for(i = 0; i < PAGE_TYPES; i++) {
|
for(i = 0; i < PAGE_TYPES; i++) {
|
||||||
struct mpage *prev = NULL;
|
|
||||||
|
|
||||||
if(gc->gc_full) {
|
if(gc->gc_full) {
|
||||||
work = GC->gen1_pages[i];
|
mpage *work = GC->gen1_pages[i];
|
||||||
|
mpage *prev = NULL;
|
||||||
while(work) {
|
while(work) {
|
||||||
|
mpage *next = work->next;
|
||||||
if(!work->marked_on) {
|
if(!work->marked_on) {
|
||||||
struct mpage *next = work->next;
|
/* remove work from list */
|
||||||
|
|
||||||
if(prev) prev->next = next; else GC->gen1_pages[i] = next;
|
if(prev) prev->next = next; else GC->gen1_pages[i] = next;
|
||||||
if(next) work->next->prev = prev;
|
if(next) work->next->prev = prev;
|
||||||
gen1_free_mpage(work);
|
gen1_free_mpage(work);
|
||||||
work = next;
|
|
||||||
} else {
|
} else {
|
||||||
pagemap_add(work);
|
pagemap_add(work);
|
||||||
work->back_pointers = work->marked_on = 0;
|
work->back_pointers = work->marked_on = 0;
|
||||||
|
memory_in_use += work->size;
|
||||||
prev = work;
|
prev = work;
|
||||||
work = work->next;
|
|
||||||
}
|
}
|
||||||
|
work = next;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
mpage *work;
|
||||||
for(work = GC->gen1_pages[i]; work; work = work->next) {
|
for(work = GC->gen1_pages[i]; work; work = work->next) {
|
||||||
pagemap_add(work);
|
pagemap_add(work);
|
||||||
work->back_pointers = work->marked_on = 0;
|
work->back_pointers = work->marked_on = 0;
|
||||||
|
memory_in_use += work->size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* since we're here anyways, compute the total memory use */
|
|
||||||
for(work = GC->gen1_pages[i]; work; work = work->next)
|
|
||||||
gc->memory_in_use += work->size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gc->memory_in_use = memory_in_use;
|
||||||
cleanup_vacated_pages(gc);
|
cleanup_vacated_pages(gc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user