X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fsave.lisp;h=2fd6bd71d6e3c58af0aa198b5b4ecef8c4750fc3;hb=83fd554b67913275d8dc06edcad8b2f065c89c49;hp=7f0abb02fe7741e7788d65e19752304730ab70e6;hpb=b08344ddbb8d0193054b72c01be7e367422ccf03;p=sbcl.git diff --git a/src/code/save.lisp b/src/code/save.lisp index 7f0abb0..2fd6bd7 100644 --- a/src/code/save.lisp +++ b/src/code/save.lisp @@ -15,18 +15,6 @@ (in-package "SB!IMPL") -(defvar *before-save-initializations* nil - #!+sb-doc - "This is a list of functions which are called before creating a saved core - image. These functions are executed in the child process which has no ports, - so they cannot do anything that tries to talk to the outside world.") - -(defvar *after-save-initializations* nil - #!+sb-doc - "This is a list of functions which are called when a saved core image starts - up. The system itself should be initialized at this point, but applications - might not be.") - ;;;; SAVE-LISP-AND-DIE itself (sb!alien:def-alien-routine "save" (sb!alien:boolean) @@ -48,28 +36,32 @@ killing the current Lisp invocation in the process (unless it bails out early because of some argument error or something). - The following keyword args are defined: - - :TOPLEVEL - The function to run when the created core file is resumed. - The default function handles command line toplevel option - processing and runs the top level read-eval-print loop. This - function should not return. + The following &KEY args are defined: + :TOPLEVEL + The function to run when the created core file is resumed. + The default function handles command line toplevel option + processing and runs the top level read-eval-print loop. This + function should not return. + :PURIFY + If true (the default), do a purifying GC which moves all dynamically + allocated objects into static space so that they stay pure. This takes + somewhat longer than the normal GC which is otherwise done, but it's + only done once, and subsequent GC's will be done less often and will + take less time in the resulting core file. See PURIFY. + :ROOT-STRUCTURES + This should be a list of the main entry points in any newly loaded + systems. This need not be supplied, but locality and/or GC performance + may be better if they are. Meaningless if :PURIFY is NIL. See PURIFY. + :ENVIRONMENT-NAME + This is also passed to PURIFY when :PURIFY is T. (rarely used) - :PURIFY - If true (the default), do a purifying GC which moves all dynamically - allocated objects into static space so that they stay pure. This takes - somewhat longer than the normal GC which is otherwise done, but it's only - done once, and subsequent GC's will be done less often and will take less - time in the resulting core file. See PURIFY. - - :ROOT-STRUCTURES - This should be a list of the main entry points in any newly loaded - systems. This need not be supplied, but locality and/or GC performance - may be better if they are. Meaningless if :PURIFY is NIL. See PURIFY. - - :ENVIRONMENT-NAME - This is also passed to PURIFY when :PURIFY is T. (rarely used)" + The save/load process changes the values of some global variables: + *STANDARD-OUTPUT*, *DEBUG-IO*, etc. + Everything related to open streams is necessarily changed, since + the OS won't let us preserve a stream across save and load. + *DEFAULT-PATHNAME-DEFAULTS* + This is reinitialized to reflect the working directory where the + saved core is loaded." #!+mp (sb!mp::shutdown-multi-processing) (when (fboundp 'sb!eval:flush-interpreted-function-cache) @@ -101,27 +93,3 @@ (without-gcing (save (unix-namestring core-file-name nil) (get-lisp-obj-address #'restart-lisp))))) - -;;;; functions used by worldload.lisp in CMU CL bootstrapping - -;;; If Name has been byte-compiled, and :RUNTIME is a feature, then load the -;;; byte-compiled version, otherwise just do normal load. -#+nil ; no longer needed in SBCL.. I think.. -- WHN 19990814 -(defun maybe-byte-load (name &optional (load-native t)) - (let ((bname (make-pathname - :defaults name - :type #.(sb!c:backend-byte-fasl-file-type)))) - (cond ((and (featurep :runtime) - (probe-file bname)) - (load bname)) - (load-native - (load name))))) - -;;; Replace a cold-loaded native object file with a byte-compiled one, if it -;;; exists. -#+nil ; no longer needed in SBCL.. I think.. -- WHN 19990814 -(defun byte-load-over (name) - (load (make-pathname - :defaults name - :type #.(sb!c:backend-byte-fasl-file-type)) - :if-does-not-exist nil))