[steeldump-cvs] r12 - trunk/sb-heapdump
Author: dlichteblau Date: Sat Aug 26 11:48:20 2006 New Revision: 12 Modified: trunk/sb-heapdump/NEWS trunk/sb-heapdump/relocate.c Log: Map heap files into the youngest non-empty (!) generation >= 2. Previously generation 2 was always used, which seems to have stopped working in SBCL 0.9.13.22. Modified: trunk/sb-heapdump/NEWS ============================================================================== --- trunk/sb-heapdump/NEWS (original) +++ trunk/sb-heapdump/NEWS Sat Aug 26 11:48:20 2006 @@ -1,3 +1,6 @@ +Changes in svn: + writeme + Changes in sb-heapdump-05 * x86-64 fixes * PowerPC/cheneygc port Modified: trunk/sb-heapdump/relocate.c ============================================================================== --- trunk/sb-heapdump/relocate.c (original) +++ trunk/sb-heapdump/relocate.c Sat Aug 26 11:48:20 2006 @@ -104,8 +104,6 @@ large_object_size = los; } -#define GEN 2 - void * map_dumpfile(int fd, long offset, int verbose) { @@ -115,6 +113,7 @@ long start_page, end_page; long npages; long i; + int gen = 2; /* fixme: why not 1? */ if (!reloctab_initialized) { relocate_init(); @@ -175,10 +174,14 @@ #endif ); + while (gen <= HIGHEST_NORMAL_GENERATION + && !generations[gen].bytes_allocated) + gen++; + for (i = 0; i < npages; i++) { long page = start_page + i; page_table[page].allocated = BOXED_PAGE_FLAG; - page_table[page].gen = GEN; + page_table[page].gen = gen; page_table[page].large_object = 0; page_table[page].first_object_offset = -(PAGE_BYTES * i); page_table[page].bytes_used = PAGE_BYTES; @@ -191,11 +194,11 @@ page_table[page].dont_move = 0; } page_table[end_page - 1].bytes_used = length - PAGE_BYTES * (npages-1); - generations[GEN].bytes_allocated += length; + generations[gen].bytes_allocated += length; #if 0 /* fixme: do we need these? */ bytes_allocated += length; - generations[GEN].cum_sum_bytes_allocated += length; + generations[gen].cum_sum_bytes_allocated += length; #endif if (last_free_page < end_page)
participants (1)
-
dlichteblau@common-lisp.net