0.7.4.33:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 14 Jun 2002 21:50:14 +0000 (21:50 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 14 Jun 2002 21:50:14 +0000 (21:50 +0000)
The missing piece in the OpenMCL build...
... move some clauses around in cross-compilation float logic.
NB: I am _not_ sure that this is correct in any sense
other than the empirical "it works". The IEEE-representation
logic for the cross-compiler needs review by someone
who knows what an IEEE float looks like. For now, though...
... now SBCL builds under OpenMCL!

NEWS
TODO
src/code/cross-float.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index d109ef7..d2cc599 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1129,8 +1129,9 @@ changes in sbcl-0.7.4 relative to sbcl-0.7.3:
 changes in sbcl-0.7.5 relative to sbcl-0.7.4:
   * SBCL now runs on the Tru64 (aka OSF/1) operating system on the
     Alpha architecture.
-  * More progress has been made toward bootstrapping under CLISP and
-    OpenMCL.
+  * SBCL now builds with OpenMCL (version 0.11+patches) as the
+    cross-compilation host; also, more progress has been made toward
+    bootstrapping under CLISP.
   * bug 140 fixed: redefinition of classes with different supertypes
     is now reflected in the type hierarchy. (thanks to Pierre Mai)
   * bug 158 fixed: the compiler can now deal with integer loop
diff --git a/TODO b/TODO
index 35e257a..0283960 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,8 +1,5 @@
 for early 0.7.x:
 
-* building using something other than SBCL/CMUCL, e.g. CLISP or OpenMCL,
-       as xc host; or at least hitting bugs (in them, not us:-) which
-       give us a good excuse not to:-|
 * urgent EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup:
        ** made inlining DEFUN inside MACROLET work again
        ** (also, while working on INLINE anyway, it might be easy
@@ -67,6 +64,9 @@ for early 0.7.x:
 * Either get rid of or at least rework the fdefinition/encapsulation
        system so that (SYMBOL-FUNCTION 'FOO) is identically equal to
        (FDEFINITION 'FOO).
+* building using CLISP (since building under OpenMCL works, this is
+       reduced to "it would be nice" rather than "as proof of concept")
+
 =======================================================================
 for 0.9:
 
index ec8f2ab..7fcb3e0 100644 (file)
                (if (plusp exponent)    ; if not obviously denormalized
                    (do ()
                        (nil)
-                     (cond (;; ordinary termination case
+                     (cond (;; special termination case, denormalized
+                            ;; float number
+                            (zerop exponent)
+                            ;; Denormalized numbers have exponent one
+                            ;; greater than the exponent field.
+                            (return (ash significand -1)))
+                           (;; ordinary termination case
                             (>= significand (expt 2 23))
                             (assert (< 0 significand (expt 2 24)))
                             ;; Exponent 0 is reserved for
                             (return (logior (ash exponent 23)
                                             (logand significand
                                                     (1- (ash 1 23))))))
-                           (;; special termination case, denormalized
-                            ;; float number
-                            (zerop exponent)
-                            ;; Denormalized numbers have exponent one
-                            ;; greater than the exponent field.
-                            (return (ash significand -1)))
+
                            (t
                             ;; Shift as necessary to set bit 24 of
                             ;; significand.
          (ecase lisp-sign
            (1 unsigned-result)
            (-1 (logior unsigned-result (- (expt 2 31)))))))))
+
 (defun double-float-bits (x)
   (declare (type double-float x))
   (assert (= (float-radix x) 2))
                (if (plusp exponent)    ; if not obviously denormalized
                    (do ()
                        (nil)
-                     (cond (;; ordinary termination case
+                     (cond (;; special termination case, denormalized
+                            ;; float number
+                            (zerop exponent)
+                            ;; Denormalized numbers have exponent one
+                            ;; greater than the exponent field.
+                            (return (ash significand -1)))
+                           (;; ordinary termination case
                             (>= significand (expt 2 52))
                             (assert (< 0 significand (expt 2 53)))
                             ;; Exponent 0 is reserved for
                             (return (logior (ash exponent 52)
                                             (logand significand
                                                     (1- (ash 1 52))))))
-                           (;; special termination case, denormalized
-                            ;; float number
-                            (zerop exponent)
-                            ;; Denormalized numbers have exponent one
-                            ;; greater than the exponent field.
-                            (return (ash significand -1)))
                            (t
                             ;; Shift as necessary to set bit 53 of
                             ;; significand.
          (ecase lisp-sign
            (1 unsigned-result)
            (-1 (logior unsigned-result (- (expt 2 63)))))))))
+
 (defun double-float-low-bits (x)
   (declare (type double-float x))
   (if (zerop x)
       ;; would be nice to make the family of functions have a more
       ;; consistent return convention.
       (logand #xffffffff (double-float-bits x))))
+
 (defun double-float-high-bits (x)
   (declare (type double-float x))
   (if (zerop x)
                             (ash 1 23))
                     (expt 0.5 23))))
        (* sign (kludge-opaque-expt 2.0 expt) mant))))
+
 (defun make-double-float (hi lo)
   (if (and (zerop hi) (zerop lo)) ; IEEE float special case
       0.0d0
index 99863f1..5a948aa 100644 (file)
@@ -18,4 +18,4 @@
 ;;; for internal versions, especially for internal versions off the
 ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.7.4.32"
+"0.7.4.33"