X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcold%2Fwarm.lisp;h=91bd152125da8b4c7bad6131e6e59d65fd278475;hb=3eb39e017e52b5d704e7d33405c873af52a533fd;hp=c5e8486059cbedba5db3d9a1b40e8763b2b23ed0;hpb=f188d1c6cdcb9d9aa117baf617c70a2933fa1c60;p=sbcl.git diff --git a/src/cold/warm.lisp b/src/cold/warm.lisp index c5e8486..91bd152 100644 --- a/src/cold/warm.lisp +++ b/src/cold/warm.lisp @@ -13,10 +13,11 @@ ;;;; 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))) @@ -27,17 +28,18 @@ ;;;; do belong in cold load and will hopefully make it back there reasonably ;;;; soon). -- WHN 19991207 -(dolist (stem '(;; FIXME: The files here from outside the src/pcl/ directory - ;; 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. +(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" @@ -46,12 +48,16 @@ ;; (Hopefully this will go away as we move the files above into cold load.) ;; -- WHN 19991214 (let ((fullname (concatenate 'string stem ".lisp"))) - (sb!int:/show "about to compile" fullname) + ;; (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!int:/show "done compiling" fullname) + #+sb-show (print "/done compiling src/assembly file") (if compilation-failure-p (error "COMPILE-FILE of ~S failed." fullname) (unless (load compiled-truename) @@ -59,17 +65,19 @@ ;;;; 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)) @@ -85,6 +93,15 @@ new-package-name (package-nicknames package))))))) +;;; FIXME: This nickname is a deprecated hack for backwards +;;; compatibility with code which assumed the CMU-CL-style +;;; SB-ALIEN/SB-C-CALL split. That split went away and was deprecated +;;; in 0.7.0, so we should get rid of this nickname after a while. +(let ((package (find-package "SB-ALIEN"))) + (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 @@ -142,25 +159,24 @@ ;;; ;;; FIXME: This has mutated into a hack which crudely duplicates ;;; functionality from the existing mechanism to load files from -;;; stems-and-flags.lisp-expr, without being quite parallel. (E.g. -;;; object files end up alongside the source files instead of ending -;;; up in parallel directory trees.) Maybe we could merge the -;;; filenames here into stems-and-flags.lisp-expr with some new flag -;;; (perhaps :WARM) to indicate that the files should be handled not -;;; in cold load but afterwards. Alternatively, we could call -(dolist (stem '( - ;; CLOS, derived from the PCL reference implementation +;;; build-order.lisp-expr, without being quite parallel. (E.g. object +;;; files end up alongside the source files instead of ending up in +;;; parallel directory trees.) Maybe we could merge the filenames here +;;; into build-order.lisp-expr with some new flag (perhaps :WARM) to +;;; indicate that the files should be handled not in cold load but +;;; afterwards. +(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" "src/pcl/early-low" "src/pcl/macros" + "src/pcl/compiler-support" "src/pcl/low" - "src/pcl/fin" + "src/pcl/slot-name" "src/pcl/defclass" "src/pcl/defs" "src/pcl/fngen" @@ -185,32 +201,37 @@ "src/pcl/fixup" "src/pcl/defcombin" "src/pcl/ctypes" - "src/pcl/construct" "src/pcl/env" "src/pcl/documentation" "src/pcl/print-object" "src/pcl/precom1" "src/pcl/precom2" - ;; functionality which depends on CLOS + + ;; miscellaneous functionality which depends on CLOS "src/code/force-delayed-defbangmethods" + + ;; CLOS-level support for the Gray OO streams + ;; extension (which is also supported by various + ;; lower-level hooks elsewhere in the code) + "src/pcl/gray-streams-class" + "src/pcl/gray-streams" + ;; other functionality not needed for cold init, moved ;; to warm init to reduce peak memory requirement in ;; cold init - "src/code/describe" ; FIXME: should be byte compiled - "src/code/inspect" ; FIXME: should be byte compiled + "src/code/describe" + "src/code/inspect" "src/code/profile" "src/code/ntrace" "src/code/foreign" "src/code/run-program" + ;; Code derived from PCL's pre-ANSI DESCRIBE-OBJECT ;; facility is still used in our ANSI DESCRIBE ;; facility, and should be compiled and loaded after ;; our DESCRIBE facility is compiled and loaded. - "src/pcl/describe" ; FIXME: should probably be byte compiled - ;; FIXME: What about Gray streams? e.g. "gray-streams.lisp" - ;; and "gray-streams-class.lisp"? For now, we just - ;; have stubs (installed in cold load). - )) + "src/pcl/describe")) + (let ((fullname (concatenate 'string stem ".lisp"))) (sb-int:/show "about to compile" fullname) (multiple-value-bind @@ -248,21 +269,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))) - -;;; FIXME: It would be good to unintern stuff we will no longer need -;;; before we go on to PURIFY. E.g. -;;; * various PCL stuff like INITIAL-CLASSES-AND-WRAPPERS; and -;;; * *BUILT-IN-CLASSES* (which can't actually be freed by UNINTERN at -;;; this point, since it passed through another PURIFY earlier -;;; at cold init time).