0.8.1.35:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 16 Jul 2003 11:51:25 +0000 (11:51 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 16 Jul 2003 11:51:25 +0000 (11:51 +0000)
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
src/code/defbangtype.lisp
tests/array.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index ffdb9b4..0adda5f 100644 (file)
--- 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
index 6fac80c..7c58c4d 100644 (file)
 ;;; 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))))
index 1b7f9cd..60eb661 100644 (file)
 (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
index 4e2d67d..09a18c5 100644 (file)
@@ -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"