From: Alexey Dejneka Date: Sat, 2 Jul 2005 06:49:12 +0000 (+0000) Subject: 0.9.2.13: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=1ce0ed2dc780758503d284e981768bd505564a88;p=sbcl.git 0.9.2.13: * 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. --- diff --git a/NEWS b/NEWS index 581c5b6..7b529f3 100644 --- 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 diff --git a/src/code/foreign.lisp b/src/code/foreign.lisp index c7268ac..39e928c 100644 --- a/src/code/foreign.lisp +++ b/src/code/foreign.lisp @@ -46,8 +46,11 @@ 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)) diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index ab21afa..2423b82 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -797,5 +797,7 @@ ((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))))))) diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 151d30c..ac59674 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -1463,7 +1463,7 @@ (movable flushable)) (defknown foreign-symbol-address-as-integer (simple-string &optional boolean) - integer + (values integer boolean) (movable flushable)) ;;;; miscellaneous internal utilities diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index b85f5cf..a7e59e3 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -1789,4 +1789,26 @@ (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))) diff --git a/tests/eucjp.impure.lisp b/tests/eucjp.impure.lisp index e16a033..f4d90ed 100644 --- a/tests/eucjp.impure.lisp +++ b/tests/eucjp.impure.lisp @@ -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")) diff --git a/tests/external-format.impure.lisp b/tests/external-format.impure.lisp index 2cadc0c..d1a5d38 100644 --- a/tests/external-format.impure.lisp +++ b/tests/external-format.impure.lisp @@ -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) diff --git a/version.lisp-expr b/version.lisp-expr index 69bafa4..b0f8749 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.9.2.12" +"0.9.2.13"