0.7.4.7:
authorChristophe Rhodes <csr21@cam.ac.uk>
Thu, 30 May 2002 12:30:53 +0000 (12:30 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Thu, 30 May 2002 12:30:53 +0000 (12:30 +0000)
Slightly sanitized version of CSR "MAKE-LOAD-FORM bootstrapping
problem" sbcl-devel 2002-05-27
... write and use SB!XC:MAKE-LOAD-FORM-SAVING-SLOTS
... make the magic symbol :SB-JUST-DUMP-IT-NORMALLY; should now be
arbitrarily changeable
Minor unrelated cleanups to text files

CREDITS
NEWS
build-order.lisp-expr
src/code/cross-make-load-form.lisp [new file with mode: 0644]
src/code/defbangstruct.lisp
src/code/target-defstruct.lisp
src/cold/defun-load-or-cload-xcompiler.lisp
src/compiler/main.lisp
version.lisp-expr

diff --git a/CREDITS b/CREDITS
index 3e6c25f..8800487 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -578,10 +578,10 @@ William ("Bill") Newman:
 
 Christophe Rhodes:
   He ported SBCL to SPARC, made various port-related and SPARC-related
-  changes (like *BACKEND-FEATURES*, made many fixes and improvements
-  in the compiler's type system, has done a substantial amount of work
-  on bootstrapping SBCL under unrelated (non-SBCL, non-CMU-CL) Common
-  Lisps, and contributed in other ways as well.
+  changes (like *BACKEND-SUBFEATURES*), made many fixes and
+  improvements in the compiler's type system, has done a substantial
+  amount of work on bootstrapping SBCL under unrelated (non-SBCL,
+  non-CMU-CL) Common Lisps, and contributed in other ways as well.
 
 Stig Erik Sandoe:
   He showed how to convince the GNU toolchain to build SBCL in a way
diff --git a/NEWS b/NEWS
index 8e76c9b..59ebe6b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1129,6 +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:
   * 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
+    increments different from 1; fixing this turned out also to fix
+    bug 164.
   * bug 169 fixed: no more bogus warnings about using lexical bindings
     despite the presence of perfectly good SPECIAL declarations. (thanks
     to David Lichteblau)
index 508c40f..76acd22 100644 (file)
@@ -68,6 +68,7 @@
  ("src/code/cross-float" :not-target)
  ("src/code/cross-io"    :not-target)
  ("src/code/cross-sap"   :not-target)
+ ("src/code/cross-make-load-form" :not-target)
 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; stuff needed early both in cross-compilation host and in target Lisp
diff --git a/src/code/cross-make-load-form.lisp b/src/code/cross-make-load-form.lisp
new file mode 100644 (file)
index 0000000..7e26e75
--- /dev/null
@@ -0,0 +1,50 @@
+;;;; cross-compile-time-only replacements for make-load-form
+;;;; machinery.
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; This software is derived from the CMU CL system, which was
+;;;; written at Carnegie Mellon University and released into the
+;;;; public domain. The software is in the public domain and is
+;;;; provided with absolutely no warranty. See the COPYING and CREDITS
+;;;; files for more information.
+
+;;; this probably deserves a word of explanation, as somewhat
+;;; unusually we require the behaviour of this function to change
+;;; depending on not at what stage we build it but at what stage we
+;;; run it. This function will be called both when the host compiler
+;;; dumps structures of type structure!object and when the
+;;; cross-compiler does likewise; we don't control the dumper for the
+;;; host compiler, so we use its own machinery for dumping host fasls,
+;;; but we need to use target machinery for target fasls. We therefore
+;;; dispatch on the presence of :SB-XC-HOST in the *FEATURES* list for
+;;; which mechanism to use. This probably counts as a KLUDGE; a proper
+;;; solution might be one or more of:
+;;;
+;;; * change def!struct to have two make-load-form-funs associated
+;;;   with it; one to run when CL:MAKE-LOAD-FORM is called, and one
+;;;   for SB!XC:MAKE-LOAD-FORM
+;;;
+;;; * implement MAKE-LOAD-FORM-SAVING-SLOTS properly rather than have
+;;;   this magic value, and use it consistently.
+;;;
+;;; Also, something along these lines can remove the special case in
+;;; EMIT-MAKE-LOAD-FORM in src/compiler/main.lisp.
+(defun sb!xc:make-load-form-saving-slots (object &rest args
+                                         &key slot-names environment)
+  (declare (ignore environment))
+  (if (member :sb-xc-host *features*)
+      ;; we're still building the cross-compiler, so use the host's
+      ;; mechanism:
+      (apply #'make-load-form-saving-slots object args)
+      ;; we're building cold fasls, so use the target's mechanism:
+      ;;
+      ;; KLUDGE: This is essentially the same definition as for the
+      ;; target's MAKE-LOAD-FORM-SAVING-SLOTS; it would be nice to
+      ;; share code with that if possible. -- CSR, 2002-05-30
+      (if slot-names
+         (bug "MAKE-LOAD-FORM-SAVING-SLOTS ~
+                called with :SLOT-NAMES argument during cross-compilation")
+         :sb-just-dump-it-normally)))
+
index db3965a..7a8d3ae 100644 (file)
@@ -76,8 +76,8 @@
 (defun just-dump-it-normally (object &optional (env nil env-p))
   (declare (type structure!object object))
   (if env-p
-      (make-load-form-saving-slots object :environment env)
-      (make-load-form-saving-slots object)))
+      (sb!xc:make-load-form-saving-slots object :environment env)
+      (sb!xc:make-load-form-saving-slots object)))
 
 ;;; a MAKE-LOAD-FORM function for objects which don't use the load
 ;;; form system. This is used for LAYOUT objects because the special
index ddce36a..858e452 100644 (file)
   (declare (ignore object environment))
   (if slot-names
       (error "stub: MAKE-LOAD-FORM-SAVING-SLOTS :SLOT-NAMES not implemented") ; KLUDGE
-      :just-dump-it-normally))
+      :sb-just-dump-it-normally))
 \f
 ;;;; testing structure types
 
index 3445a06..8fcc696 100644 (file)
                    "MACRO-FUNCTION"
                    "MACROEXPAND" "MACROEXPAND-1" "*MACROEXPAND-HOOK*"
                    "MAKE-LOAD-FORM"
+                   "MAKE-LOAD-FORM-SAVING-SLOTS"
                    "PACKAGE" "PACKAGEP"
                    "PROCLAIM"
                    "SPECIAL-OPERATOR-P"
index c44d601..89f7813 100644 (file)
 ;;; If the constant doesn't show up in *CONSTANTS-BEING-CREATED*, then
 ;;; we have to create it. We call MAKE-LOAD-FORM and check to see
 ;;; whether the creation form is the magic value
-;;; :JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
+;;; :SB-JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
 ;;; dumper will eventually get its hands on the object and use the
 ;;; normal structure dumping noise on it.
 ;;;
                                 constant
                                 condition)))
       (case creation-form
-       (:just-dump-it-normally
+       (:sb-just-dump-it-normally
         (fasl-validate-structure constant *compile-object*)
         t)
        (:ignore-it
index ba0edd8..3e842c1 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.6"
+"0.7.4.7"