0.9.1.38:
[sbcl.git] / src / code / save.lisp
index 1d3b3fa..8cefec9 100644 (file)
@@ -77,7 +77,8 @@ automatically reloaded on startup, but references to foreign symbols
 do not survive intact on all platforms: in this case a WARNING is
 signalled when saving the core. If no warning is signalled, then the
 foreign symbol references will remain intact. Platforms where this is
 do not survive intact on all platforms: in this case a WARNING is
 signalled when saving the core. If no warning is signalled, then the
 foreign symbol references will remain intact. Platforms where this is
-currently the case are x86/FreeBSD, x86/Linux, and sparc/SunOS.
+currently the case are x86/FreeBSD, x86/Linux, x86/NetBSD,
+sparc/Linux, sparc/SunOS, and ppc/Darwin.
 
 This implementation is not as polished and painless as you might like:
   * It corrupts the current Lisp image enough that the current process
 
 This implementation is not as polished and painless as you might like:
   * It corrupts the current Lisp image enough that the current process
@@ -102,8 +103,8 @@ sufficiently motivated to do lengthy fixes."
       #-gencgc (gc) #+gencgc (gc :full t))
   (flet ((restart-lisp ()
            (handling-end-of-the-world
       #-gencgc (gc) #+gencgc (gc :full t))
   (flet ((restart-lisp ()
            (handling-end-of-the-world
-           (reinit)
-           (funcall toplevel))))
+            (reinit)
+            (funcall toplevel))))
     ;; FIXME: Perhaps WITHOUT-GCING should be wrapped around the
     ;; LET as well, to avoid the off chance of an interrupt triggering
     ;; GC and making our saved RESTART-LISP address invalid?
     ;; FIXME: Perhaps WITHOUT-GCING should be wrapped around the
     ;; LET as well, to avoid the off chance of an interrupt triggering
     ;; GC and making our saved RESTART-LISP address invalid?
@@ -112,7 +113,9 @@ sufficiently motivated to do lengthy fixes."
           (get-lisp-obj-address #'restart-lisp)))))
 
 (defun deinit ()
           (get-lisp-obj-address #'restart-lisp)))))
 
 (defun deinit ()
-  (mapc #'funcall *save-hooks*)
+  (dolist (hook *save-hooks*)
+    (with-simple-restart (continue "Skip this save hook.")
+      (funcall hook)))
   (when (fboundp 'cancel-finalization)    
     (cancel-finalization sb!sys:*tty*))
   (profile-deinit)
   (when (fboundp 'cancel-finalization)    
     (cancel-finalization sb!sys:*tty*))
   (profile-deinit)