From a4573e20ce28626ca6926fe7879c46fa1c55c1b7 Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Wed, 16 Jul 2003 11:51:25 +0000 Subject: [PATCH] 0.8.1.35: Remove leakage from host to target of ARRAY-FOO-LIMIT via the INDEX type ... don't UNCROSS everything in DEF!TYPE, just the name. ... test for one of the symptoms (thanks to Patrik Nordebo for providing a manageable test case) --- NEWS | 5 +++++ src/code/defbangtype.lisp | 6 +++--- tests/array.pure.lisp | 11 +++++++++++ version.lisp-expr | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index ffdb9b4..0adda5f 100644 --- a/NEWS +++ b/NEWS @@ -1916,9 +1916,14 @@ changes in sbcl-0.8.2 relative to sbcl-0.8.1: * fixed bug: if last continuation of a deleted block has a destination, this destination should be deleted too. (reported by ohler on #lisp) + * fixed a bug in the bootstrap process: the host compiler's values + of ARRAY-DIMENSION-LIMIT and ARRAY-TOTAL-SIZE-LIMIT no longer leak + into the newly-built SBCL. (reported by Eric Marsden on #lisp, + test case from Patrik Nordebo) * fixed some bugs revealed by Paul Dietz' test suite: ** LAST and [N]BUTLAST should accept a bignum. ** condition slot accessors are methods. + ** (VECTOR NIL) is a subtype of STRING. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles diff --git a/src/code/defbangtype.lisp b/src/code/defbangtype.lisp index 6fac80c..7c58c4d 100644 --- a/src/code/defbangtype.lisp +++ b/src/code/defbangtype.lisp @@ -28,11 +28,11 @@ ;;; completely parallel, at which time they should be merged to ;;; eliminate the duplicate code. -(defmacro def!type (&rest rest) +(defmacro def!type (name &rest rest) `(progn - (deftype ,@rest) + (deftype ,name ,@rest) #+sb-xc-host - ,(let ((form `(sb!xc:deftype ,@(uncross rest)))) + ,(let ((form `(sb!xc:deftype ,(uncross name) ,@rest))) (if (boundp '*delayed-def!types*) `(push ',form *delayed-def!types*) form)))) diff --git a/tests/array.pure.lisp b/tests/array.pure.lisp index 1b7f9cd..60eb661 100644 --- a/tests/array.pure.lisp +++ b/tests/array.pure.lisp @@ -130,3 +130,14 @@ (multiple-value-bind (fun warn fail) (compile nil '(lambda () (make-array 5 :element-type 'undefined-type))) (assert warn)) + +(flet ((opaque-identity (x) x)) + (declare (notinline opaque-identity)) + ;; we used to have leakage from cross-compilation hosts of the INDEX + ;; type, which prevented us from actually using all the large array + ;; dimensions that we promised. Let's make sure that we can create + ;; an array with more than 2^24 elements, since that was a symptom + ;; from the CLISP and OpenMCL hosts. + (let ((big-array (opaque-identity + (make-array (expt 2 26) :element-type 'bit)))) + (assert (= (length big-array) (expt 2 26))))) \ No newline at end of file diff --git a/version.lisp-expr b/version.lisp-expr index 4e2d67d..09a18c5 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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.8.1.34" +"0.8.1.35" -- 1.7.10.4