[steeldump-cvs] r12 - trunk/sb-heapdump

dlichteblau at common-lisp.net dlichteblau at common-lisp.net
Sat Aug 26 15:48:21 UTC 2006


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)



More information about the Steeldump-cvs mailing list