0.9.2.13:
authorAlexey Dejneka <adejneka@comail.ru>
Sat, 2 Jul 2005 06:49:12 +0000 (06:49 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sat, 2 Jul 2005 06:49:12 +0000 (06:49 +0000)
        * Add constant folding of ARRAY-HEADER-P for complex-array
          argument (fixes spurious warning reported by Eduardo
          Mu\~noz).
        * FOREIGN-SYMBOL-ADDRESS-AS-INTEGER does not loose second
          result (fix bug reported by Luis Oliveira).
        * Don't run external format checks on SBCL without Unicode
          support.

NEWS
src/code/foreign.lisp
src/compiler/array-tran.lisp
src/compiler/fndb.lisp
tests/compiler.pure.lisp
tests/eucjp.impure.lisp
tests/external-format.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 581c5b6..7b529f3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,4 @@
+;;;; -*- coding: utf-8; -*-
 changes in sbcl-0.9.3 relative to sbcl-0.9.2:
   * New feature: Experimental support for bivalent streams: streams
     opened with :element-type :default now allow character and binary
@@ -8,6 +9,12 @@ changes in sbcl-0.9.3 relative to sbcl-0.9.2:
   * bug fix: no more highly sporadic "couldn't check whether ~S is
     readable" when reading a stream and an interrupt hits in the middle
     of a select system call
+
+  * compiler better recognizes complex arrays (reported by Eduardo
+    Muñoz)
+  * bug fix: out-of-line SB-SYS:FOREIGN-SYMBOL-ADDRESS did not work
+    for variables on SBCL built with linkage-tables. (reported by Luis
+    Oliveira)
   * threads
     ** added x86-64 support
     ** incompatible change: the threading api now works with thread
index c7268ac..39e928c 100644 (file)
                 t))))
 
 (defun foreign-symbol-address-as-integer (name &optional datap)
-  (or (foreign-symbol-address-as-integer-or-nil name datap)
-      (error "Unknown foreign symbol: ~S" name)))
+  (multiple-value-bind (addr sharedp)
+      (foreign-symbol-address-as-integer-or-nil name datap)
+    (if addr
+        (values addr sharedp)
+        (error "Unknown foreign symbol: ~S" name))))
 
 (defun foreign-symbol-address (symbol &optional datap)
   (declare (ignorable datap))
index ab21afa..2423b82 100644 (file)
                    ((and (listp dims) (/= (length dims) 1))
                     ;; multi-dimensional array, will have a header
                     (specifier-type '(eql t)))
+                   ((eql (array-type-complexp type) t)
+                    (specifier-type '(eql t)))
                    (t
                     nil)))))))
index 151d30c..ac59674 100644 (file)
   (movable flushable))
 
 (defknown foreign-symbol-address-as-integer (simple-string &optional boolean)
-  integer
+  (values integer boolean)
   (movable flushable))
 
 ;;;; miscellaneous internal utilities
index b85f5cf..a7e59e3 100644 (file)
          (LAMBDA (B)
            (DECLARE (TYPE (INTEGER -2 14) B))
            (DECLARE (IGNORABLE B))
-           (ASH (IMAGPART B) 57)))
\ No newline at end of file
+           (ASH (IMAGPART B) 57)))
+
+;;; bug reported by Eduardo Mu\~noz
+(multiple-value-bind (fun warnings failure)
+    (compile nil '(lambda (struct first)
+                   (declare (optimize speed))
+                   (let* ((nodes (nodes struct))
+                          (bars (bars struct))
+                          (length (length nodes))
+                          (new (make-array length :fill-pointer 0)))
+                     (vector-push first new)
+                     (loop with i fixnum = 0
+                           for newl fixnum = (length new)
+                           while (< newl length) do
+                           (let ((oldl (length new)))
+                             (loop for j fixnum from i below newl do
+                                   (dolist (n (node-neighbours (aref new j) bars))
+                                     (unless (find n new)
+                                       (vector-push n new))))
+                             (setq i oldl)))
+                     new)))
+  (declare (ignore fun warnings failure))
+  (assert (not failure)))
index e16a033..f4d90ed 100644 (file)
@@ -1,3 +1,6 @@
+#-sb-unicode
+(sb-ext:quit :unix-status 104)
+
 (let ((p "eucjp-test.data")
       (eucjp "eucjp-test-eucjp.data")
       (utf8 "eucjp-test-utf8.data"))
index 2cadc0c..d1a5d38 100644 (file)
@@ -15,6 +15,9 @@
 ;;;; absolutely no warranty. See the COPYING and CREDITS files for
 ;;;; more information.
 
+#-sb-unicode
+(sb-ext:quit :unix-status 104)
+
 (defmacro do-external-formats ((xf &optional result) &body body)
   (let ((nxf (gensym)))
     `(dolist (,nxf sb-impl::*external-formats* ,result)
index 69bafa4..b0f8749 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.9.2.12"
+"0.9.2.13"