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
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)
("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
--- /dev/null
+;;;; 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)))
+
(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
(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
"MACRO-FUNCTION"
"MACROEXPAND" "MACROEXPAND-1" "*MACROEXPAND-HOOK*"
"MAKE-LOAD-FORM"
+ "MAKE-LOAD-FORM-SAVING-SLOTS"
"PACKAGE" "PACKAGEP"
"PROCLAIM"
"SPECIAL-OPERATOR-P"
;;; 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
;;; 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"