From: Nikodemus S. <de...@us...> - 2008-05-12 14:12:49
|
Update of /cvsroot/sbcl/sbcl In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30141 Modified Files: BUGS NEWS make-host-2.lisp version.lisp-expr Log Message: 1.0.16.29: workaround for bug 419 * Require an explicit SB-C::STACK-ALLOCATE-VALUE-CELLS optimize declaration before stack allocating value cells to prevent returning garbage values from hairy user code. Index: BUGS =================================================================== RCS file: /cvsroot/sbcl/sbcl/BUGS,v retrieving revision 1.535 retrieving revision 1.536 diff -u -d -r1.535 -r1.536 --- BUGS 5 May 2008 13:26:06 -0000 1.535 +++ BUGS 12 May 2008 14:12:42 -0000 1.536 @@ -1810,7 +1810,8 @@ 419: stack-allocated indirect closure variables are not popped - (locally (declare (optimize speed (safety 0))) + (locally (declare (optimize sb-c::stack-allocate-dynamic-extent + sb-c::stack-allocate-value-cells)) (defun bug419 (x) (multiple-value-call #'list (eval '(values 1 2 3)) @@ -1823,7 +1824,13 @@ (declare (dynamic-extent #'mget #'mset)) ((lambda (f g) (eval `(progn ,f ,g (values 4 5 6)))) #'mget #'mset)))))) - (ASSERT (EQUAL (BUG419) '(1 2 3 4 5 6))) => failure + (ASSERT (EQUAL (BUG419 42) '(1 2 3 4 5 6))) => failure + + Note: as of SBCL 1.0.26.29 this bug no longer affects user code, as + SB-C::STACK-ALLOCATE-VALUE-CELLS needs to be explicitly turned on for + that to happen. Proper fix for this bug requires (Nikodemus thinks) + storing the relevant LAMBDA-VARs in a :DYNAMIC-EXTENT cleanup, and + teaching stack analysis how to deal with them. 420: The MISC.556 test from gcl/ansi-tests/misc.lsp fails hard. Index: NEWS =================================================================== RCS file: /cvsroot/sbcl/sbcl/NEWS,v retrieving revision 1.1336 retrieving revision 1.1337 diff -u -d -r1.1336 -r1.1337 --- NEWS 8 May 2008 11:52:04 -0000 1.1336 +++ NEWS 12 May 2008 14:12:42 -0000 1.1337 @@ -1,5 +1,9 @@ ;;;; -*- coding: utf-8; -*- changes in sbcl-1.0.17 relative to 1.0.16: + * temporary regression: user code can no longer allocate closure + variable storage on stack, due to bug 419 without explicitly + requesting it. Please consult sbcl-devel for advice if you need to + use this feature in the meanwhile. * optimization: ADJOIN and PUSHNEW are upto ~70% faster in normal SPEED policies. * optimization: APPEND is upto ~10% faster in normal SPEED policies. Index: make-host-2.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/make-host-2.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- make-host-2.lisp 29 Dec 2005 16:08:31 -0000 1.1 +++ make-host-2.lisp 12 May 2008 14:12:43 -0000 1.2 @@ -29,7 +29,9 @@ ;; never insert stepper conditions (sb!c:insert-step-conditions 0) ;; always stack-allocate if requested - (sb!c::stack-allocate-dynamic-extent 3))))) + (sb!c::stack-allocate-dynamic-extent 3) + ;; ...even value cells! + (sb!c::stack-allocate-value-cells 3))))) (compile 'proclaim-target-optimization) (defun in-target-cross-compilation-mode (fun) Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.3941 retrieving revision 1.3942 diff -u -d -r1.3941 -r1.3942 --- version.lisp-expr 11 May 2008 07:42:04 -0000 1.3941 +++ version.lisp-expr 12 May 2008 14:12:43 -0000 1.3942 @@ -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".) -"1.0.16.28" +"1.0.16.29" |