1.0.28.76: fix non-unicode builds on x86 and x86-64
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 3 Jun 2009 15:56:32 +0000 (15:56 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 3 Jun 2009 15:56:32 +0000 (15:56 +0000)
* The problem has been there since 1.0.24.35, but possibly
  exposed only recently: MOVE-IF/CHAR cannot use byte-sized
  registers since CMOV cannot. Hence disable if for non-unicode
  builds.

  Reported by Stas Boukarev.

* Missing news entry from 1.0.28.75.

NEWS
src/compiler/x86-64/pred.lisp
src/compiler/x86/pred.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index c794c3a..42ccd73 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -89,6 +89,8 @@
   * bug fix: signals delivered to threads started from foreign land (read:
     directly by pthread_create, not by MAKE-THREAD) are redirected to a Lisp
     thread by blocking all signals and resignalling.
+  * bug fix: SHARED-INITIALIZE initialized unbound :ALLOCATION :CLASS slots
+    from :INITFORM, if any.
 
 changes in sbcl-1.0.28 relative to 1.0.27:
   * a number of bugs in cross-compilation have been fixed, with the ultimate
index e1f08e0..8c9b2fd 100644 (file)
             ((unsigned-byte-64 unsigned-byte-63)
              unsigned-reg move-if/unsigned)
             (signed-byte-64 signed-reg move-if/signed)
+            ;; FIXME: Can't use CMOV with byte registers, and characters live
+            ;; in such outside of unicode builds. A better solution then just
+            ;; disabling MOVE-IF/CHAR should be possible, though.
+            #!+sb-unicode
             (character character-reg move-if/char)
 
             ((single-float complex-single-float
       unsigned-num unsigned-reg unsigned-stack)
   (def-move-if move-if/signed
       signed-num signed-reg signed-stack)
+  ;; FIXME: See *CMOV-PTYPE-REPRESENTATION-VOP* above.
+  #!+sb-unicode
   (def-move-if move-if/char
       character character-reg character-stack)
   (def-move-if move-if/sap
index f7bb241..da77d6f 100644 (file)
             ((unsigned-byte-32 unsigned-byte-31)
              unsigned-reg move-if/unsigned)
             (signed-byte-32 signed-reg move-if/signed)
+            ;; FIXME: Can't use CMOV with byte registers, and characters live
+            ;; in such outside of unicode builds. A better solution then just
+            ;; disabling MOVE-IF/CHAR should be possible, though.
+            #!+sb-unicode
             (character character-reg move-if/char)
 
             ((single-float complex-single-float
   (def-move-if move-if/fx tagged-num any-reg control-stack)
   (def-move-if move-if/unsigned unsigned-num unsigned-reg unsigned-stack)
   (def-move-if move-if/signed signed-num signed-reg signed-stack)
+  ;; FIXME: See *CMOV-PTYPE-REPRESENTATION-VOP* above.
+  #!+sb-unicode
   (def-move-if move-if/char character character-reg character-stack)
   (def-move-if move-if/sap system-area-pointer sap-reg sap-stack))
 
index d71f4c0..aef0c48 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".)
-"1.0.28.75"
+"1.0.28.76"