From 131e996974653db756751f752d368d26b57c7b34 Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Fri, 12 Dec 2008 19:34:33 +0000 Subject: [PATCH] added cleanup for pagemaps svn: r12796 --- src/mzscheme/gc2/newgc.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 3010b6b005..94b7d5d5cd 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -35,6 +35,7 @@ #include "gc2.h" #include "gc2_dump.h" + /* the number of tags to use for tagged objects */ #define NUMBER_OF_TAGS 512 @@ -262,10 +263,33 @@ int GC_mtrace_union_current_with(int newval) /*****************************************************************************/ /* Page Map Routines */ /*****************************************************************************/ +inline static void free_page_maps(PageMap page_maps1) { +#ifdef SIXTY_FOUR_BIT_INTEGERS + unsigned long i; + unsigned long j; + mpage ***page_maps2; + mpage **page_maps3; + + for (i=0; imark_table = ofm_malloc_zero(NUMBER_OF_TAGS * sizeof (Mark_Proc)); newgc->fixup_table = ofm_malloc_zero(NUMBER_OF_TAGS * sizeof (Fixup_Proc)); } + #ifdef SIXTY_FOUR_BIT_INTEGERS newgc->page_maps = ofm_malloc_zero(PAGEMAP64_LEVEL1_SIZE * sizeof (mpage***)); #else newgc->page_maps = ofm_malloc_zero(PAGEMAP32_SIZE * sizeof (mpage*)); #endif + newgc->vm = vm_create(); newgc->protect_range = ofm_malloc_zero(sizeof(Page_Range)); @@ -2718,6 +2744,13 @@ void GC_free_all(void) } } + free(gc->mark_table); + free(gc->fixup_table); + + free_page_maps(gc->page_maps); + + free(gc->protect_range); + vm_flush_freed_pages(gc->vm); vm_free(gc->vm); free(gc);