0.7.7.24:
[sbcl.git] / src / code / save.lisp
index 74a6906..2356255 100644 (file)
@@ -17,9 +17,9 @@
 \f
 ;;;; SAVE-LISP-AND-DIE itself
 
-(sb!alien:def-alien-routine "save" (sb!alien:boolean)
-  (file sb!c-call:c-string)
-  (initial-function (sb!alien:unsigned #.sb!vm:n-word-bits)))
+(sb!alien:define-alien-routine "save" (sb!alien:boolean)
+  (file sb!alien:c-string)
+  (initial-fun (sb!alien:unsigned #.sb!vm:n-word-bits)))
 
 ;;; FIXME: When this is run without the PURIFY option,
 ;;; it seems to save memory all the way up to the high-water mark,
 ;;; (But with the PURIFY option it seems to work OK.)
 (defun save-lisp-and-die (core-file-name &key
                                         (toplevel #'toplevel-init)
-                                        (purify nil)
+                                        (purify t)
                                         (root-structures ())
                                         (environment-name "auxiliary"))
   #!+sb-doc
-  "Saves a CMU Common Lisp core image in the file of the specified name,
-  killing the current Lisp invocation in the process (unless it bails
-  out early because of some argument error or something).
+  "Save a \"core image\", i.e. enough information to restart a Lisp
+  process later in the same state, in the file of the specified name.
 
-  The following &KEY args are defined:
+  This implementation is not as polished and painless as you might like: 
+    * It corrupts the current Lisp image enough that the current process
+      needs to be killed afterwards.
+    * There is absolutely no binary compatibility of core images between
+      different runtime support programs. Even runtimes built from the same
+      sources at different times are treated as incompatible for this purpose.
+  This isn't because we like it this way, but just because there don't
+  seem to be good quick fixes for either limitation and no one has been
+  sufficiently motivated to do lengthy fixes.
+
+  The following &KEY arguments are defined:
     :TOPLEVEL
        The function to run when the created core file is resumed.
        The default function handles command line toplevel option