From: Juho S. <js...@us...> - 2005-07-28 21:37:01
|
Update of /cvsroot/sbcl/sbcl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8850 Modified Files: Tag: gencgc-pagetable-branch make-target-2.sh version.lisp-expr Log Message: 0.9.3.8.gc.1: A bunch of GC changes that started to suffer from bitrot before getting sufficiently mature to commit to HEAD. This forward port to 0.9.3 seems to work, but hasn't been properly tested. The eventual goal of this branch is to have improved GC latency, higher whole-system performance and Currently done: * The static space is a bad idea on gencgc, since it has no write barrier. Make s-l-a-d default to not purifying on gencgc. * When loading a core, move the contents of the initial dynamic space into the oldest generation. * Allow doing the bits of purification related to manipulating the info environment without doing a full purification. The interface for this needs rethinking. Maybe always do the compacting when s-l-a-d is called with :purify nil. * Most iterations over the page table are only interested in pages of one generation. After the static space has been eliminated this becomes the major bottleneck in GC speed. To speed this up, maintain a doubly linked list of the pages in each generation. * Abstract iterating over the page table with C macros. * Make MAP-ALLOCATED-OBJECTS take advantage of the page table on gencgc, for better performance and more accuracy. * When saving a core without purification, do a non-conservative GC. * Add some typedefs for GC stuff like page table / generation table indices, and try to use these types consistently throughout the gencgc. * Some misc. x86-64 cleanups. To be done before this is fit for HEAD: * Even though the s-l-a-d non-conservative GC is as efficient at clearing out the unwanted bits as purify, it doesn't properly compact memory. The core files are therefore about two times bigger than they should be. Something clever needs to be done here. * Merge some bits from another tree that replaces the current "munmap/mmap to zero pages lazily when GC frees them" behaviour with "memset when pages are allocated to newspace". This might be controversial. * Test on x86. * Check that the linked list manipulations are thread-safe. * Rethink the changes to the purification interface. Index: make-target-2.sh =================================================================== RCS file: /cvsroot/sbcl/sbcl/make-target-2.sh,v retrieving revision 1.23 retrieving revision 1.23.2.1 diff -u -d -r1.23 -r1.23.2.1 --- make-target-2.sh 8 May 2005 15:55:09 -0000 1.23 +++ make-target-2.sh 28 Jul 2005 21:36:50 -0000 1.23.2.1 @@ -34,7 +34,7 @@ ;; Now that we use the compiler for macros, interpreted ;; /SHOW doesn't work until later in init. #+sb-show (print "/hello, world!") - (sb!ext:purify) + (sb!ext:purify #+gencgc :compact-only #+gencgc t) ;; Until PRINT-OBJECT and other machinery is set up, ;; we want limits on printing to avoid infinite output. @@ -95,5 +95,5 @@ ;; defined. (sb-kernel::ctype-of-cache-clear) (setq sb-c::*flame-on-necessarily-undefined-function* t) - (sb-ext:save-lisp-and-die "output/sbcl.core" :purify t) + (sb-ext:save-lisp-and-die "output/sbcl.core") EOF Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.2273 retrieving revision 1.2273.2.1 diff -u -d -r1.2273 -r1.2273.2.1 --- version.lisp-expr 28 Jul 2005 14:23:25 -0000 1.2273 +++ version.lisp-expr 28 Jul 2005 21:36:50 -0000 1.2273.2.1 @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.3.8" +"0.9.3.8.gc.1" |