X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcold%2Fwarm.lisp;h=455e9328a122047408d903895636ed61f2c34671;hb=2d3cb6dba6461e98744eca2a1df4f770cea468ca;hp=05c7539d8d690de5eb0567175b7dc3f1dfe17d9e;hpb=1a3569649605706f9ca6fde135ffb1c77b2246f4;p=sbcl.git diff --git a/src/cold/warm.lisp b/src/cold/warm.lisp index 05c7539..455e932 100644 --- a/src/cold/warm.lisp +++ b/src/cold/warm.lisp @@ -13,68 +13,29 @@ ;;;; general warm init compilation policy + (proclaim '(optimize (compilation-speed 1) (debug #+sb-show 2 #-sb-show 1) (inhibit-warnings 2) - (safety 1) + (safety 2) (space 1) (speed 2))) -;;;; KLUDGE: Compile and load files which really belong in cold load but are -;;;; here for various unsound reasons. We handle them here, before the package -;;;; hacking below, because they use the SB!FOO cold package name convention -;;;; instead of the SB-FOO final package name convention (since they really -;;;; do belong in cold load and will hopefully make it back there reasonably -;;;; soon). -- WHN 19991207 - -(dolist (stem '(;; FIXME: The assembly files here probably belong in - ;; cold load instead of warm load. They ended up here - ;; as a quick hack to work around the consequences of - ;; my misunderstanding how ASSEMBLE-FILE works when I - ;; wrote the cold build code. The cold build code - ;; expects only one FASL filename per source file, - ;; when it turns out we really need one FASL file for - ;; ASSEMBLE-FILE output and another for COMPILE-FILE - ;; output. It would probably be good to redo the cold - ;; build code so that the COMPILE-FILE stuff generated - ;; here can be loaded at the same time as the - ;; ASSEMBLE-FILE stuff generated there. - "src/assembly/target/assem-rtns" - "src/assembly/target/array" - "src/assembly/target/arith" - "src/assembly/target/alloc")) - ;; KLUDGE: Cut-and-paste programming, the sign of a true professional.:-| - ;; (Hopefully this will go away as we move the files above into cold load.) - ;; -- WHN 19991214 - (let ((fullname (concatenate 'string stem ".lisp"))) - ;; (Now that we use byte compiler for interpretation, /SHOW - ;; doesn't get compiled properly until the src/assembly files have - ;; been loaded, so we use PRINT instead.) - #+sb-show (print "/about to compile src/assembly file") - #+sb-show (print fullname) - (multiple-value-bind - (compiled-truename compilation-warnings-p compilation-failure-p) - (compile-file fullname) - (declare (ignore compilation-warnings-p)) - #+sb-show (print "/done compiling src/assembly file") - (if compilation-failure-p - (error "COMPILE-FILE of ~S failed." fullname) - (unless (load compiled-truename) - (error "LOAD of ~S failed." compiled-truename)))))) - ;;;; package hacking -;;; Our cross-compilation host is out of the picture now, so we no longer need -;;; to worry about collisions between our package names and cross-compilation -;;; host package names, so now is a good time to rename any package with a -;;; bootstrap-only name SB!FOO to its permanent name SB-FOO. +;;; Our cross-compilation host is out of the picture now, so we no +;;; longer need to worry about collisions between our package names +;;; and cross-compilation host package names, so now is a good time to +;;; rename any package with a bootstrap-only name SB!FOO to its +;;; permanent name SB-FOO. ;;; -;;; (In principle it might be tidier to do this when dumping the cold image in -;;; genesis, but in practice the logic might be a little messier because -;;; genesis dumps both symbols and packages, and we'd need to make that dumped -;;; symbols were renamed in the same way as dumped packages. Or we could do it -;;; in cold init, but it's easier to experiment with and debug things here in -;;; warm init than in cold init, so we do it here instead.) +;;; (In principle it might be tidier to do this when dumping the cold +;;; image in genesis, but in practice the logic might be a little +;;; messier because genesis dumps both symbols and packages, and we'd +;;; need to make sure that dumped symbols were renamed in the same way +;;; as dumped packages. Or we could do it in cold init, but it's +;;; easier to experiment with and debug things here in warm init than +;;; in cold init, so we do it here instead.) (let ((boot-prefix "SB!") (perm-prefix "SB-")) (dolist (package (list-all-packages)) @@ -98,40 +59,9 @@ (rename-package package (package-name package) (cons "SB-C-CALL" (package-nicknames package)))) - -;;; KLUDGE: This is created here (instead of in package-data-list.lisp-expr) -;;; because it doesn't have any symbols in it, so even if it's -;;; present at cold load time, genesis thinks it's unimportant -;;; and doesn't dump it. There's gotta be a better way, but for now -;;; I'll just do it here. (As noted below, I'd just as soon have this -;;; go away entirely, so I'm disinclined to fiddle with it too much.) -;;; -- WHN 19991206 -;;; -;;; FIXME: Why do slot accessor names need to be interned anywhere? For -;;; low-level debugging? Perhaps this should go away, or at least -;;; be optional, controlled by SB-SHOW or something. -(defpackage "SB-SLOT-ACCESSOR-NAME" - (:use)) ;;;; compiling and loading more of the system -;;; KLUDGE: In SBCL, almost all in-the-flow-of-control package hacking has -;;; gone away in favor of package setup controlled by tables. However, that -;;; mechanism isn't smart enough to handle shadowing, and since this shadowing -;;; is inherently a non-ANSI KLUDGE anyway (i.e. there ought to be no -;;; difference between e.g. CL:CLASS and SB-PCL:CLASS) there's not much -;;; point in trying to polish it by implementing a non-KLUDGEy way of -;;; setting it up. -- WHN 19991203 -(let ((*package* (the package (find-package "SB-PCL")))) - (shadow '(;; CLASS itself and operations thereon - "CLASS" "CLASS-NAME" "CLASS-OF" "FIND-CLASS" - ;; some system classes - "BUILT-IN-CLASS" "STANDARD-CLASS" "STRUCTURE-CLASS")) - ;; Of the shadowing symbols above, these are external symbols in CMU CL ca. - ;; 19991203. I'm not sure what's the basis of the decision to export some and - ;; not others; we'll just follow along.. - (export (mapcar #'intern '("CLASS-NAME" "CLASS-OF" "FIND-CLASS")))) - ;;; FIXME: CMU CL's pclcom.lisp had extra optional stuff wrapped around ;;; COMPILE-PCL, at least some of which we should probably have too: ;;; @@ -165,16 +95,15 @@ (dolist (stem '(;; CLOS, derived from the PCL reference implementation ;; ;; This PCL build order is based on a particular - ;; linearization of the declared build order - ;; dependencies from the old PCL defsys.lisp + ;; (arbitrary) linearization of the declared build + ;; order dependencies from the old PCL defsys.lisp ;; dependency database. - "src/pcl/walk" - ;; "src/pcl/iterate" removed 2001-12-20 njf + #+nil "src/pcl/walk" ; #+NIL = moved to build-order.lisp-expr "src/pcl/early-low" "src/pcl/macros" "src/pcl/compiler-support" "src/pcl/low" - ;; "src/pcl/fin" merged into "src/pcl/low" in 0.6.11.43 + "src/pcl/slot-name" "src/pcl/defclass" "src/pcl/defs" "src/pcl/fngen" @@ -186,7 +115,7 @@ "src/pcl/slots-boot" "src/pcl/combin" "src/pcl/dfun" - "src/pcl/fast-init" + "src/pcl/ctor" "src/pcl/braid" "src/pcl/dlisp3" "src/pcl/generic-functions" @@ -218,6 +147,7 @@ ;; to warm init to reduce peak memory requirement in ;; cold init "src/code/describe" + "src/code/describe-policy" "src/code/inspect" "src/code/profile" "src/code/ntrace" @@ -267,14 +197,3 @@ ;;; through the cold boot process. They need to be set somewhere. Maybe the ;;; easiest thing to do is to read them out of package-data-list.lisp-expr ;;; now? - -;;;; restoring compilation policy to neutral values in preparation for -;;;; SAVE-LISP-AND-DIE as final SBCL core - -(sb-int:/show "setting compilation policy to neutral values") -(proclaim '(optimize (compilation-speed 1) - (debug 1) - (inhibit-warnings 1) - (safety 1) - (space 1) - (speed 1)))