projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.10.39:
[sbcl.git]
/
src
/
code
/
save.lisp
diff --git
a/src/code/save.lisp
b/src/code/save.lisp
index
ac69bb9
..
77a9f1c
100644
(file)
--- a/
src/code/save.lisp
+++ b/
src/code/save.lisp
@@
-19,11
+19,13
@@
(define-alien-routine "save" (boolean)
(file c-string)
(define-alien-routine "save" (boolean)
(file c-string)
- (initial-fun (unsigned #.sb!vm:n-word-bits)))
+ (initial-fun (unsigned #.sb!vm:n-word-bits))
+ (prepend-runtime int))
#!+gencgc
(define-alien-routine "gc_and_save" void
#!+gencgc
(define-alien-routine "gc_and_save" void
- (file c-string))
+ (file c-string)
+ (prepend-runtime int))
#!+gencgc
(defvar sb!vm::*restart-lisp-function*)
#!+gencgc
(defvar sb!vm::*restart-lisp-function*)
@@
-33,7
+35,8
@@
(purify #!+gencgc nil
#!-gencgc t)
(root-structures ())
(purify #!+gencgc nil
#!-gencgc t)
(root-structures ())
- (environment-name "auxiliary"))
+ (environment-name "auxiliary")
+ (executable nil))
#!+sb-doc
"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.
#!+sb-doc
"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.
@@
-47,6
+50,11
@@
The following &KEY arguments are defined:
and runs the top level read-eval-print loop. This function should
not return.
and runs the top level read-eval-print loop. This function should
not return.
+ :EXECUTABLE
+ If true, arrange to combine the SBCL runtime and the core image
+ to create a standalone executable. If false (the default), the
+ core image will not be executable on its own.
+
:PURIFY
If true (the default on cheneygc), do a purifying GC which moves all
dynamically allocated objects into static space. This takes
:PURIFY
If true (the default on cheneygc), do a purifying GC which moves all
dynamically allocated objects into static space. This takes
@@
-113,10
+121,12
@@
sufficiently motivated to do lengthy fixes."
;; A normal GC will leave huge amounts of storage unreclaimed
;; (over 50% on x86). This needs to be done by a single function
;; since the GC will invalidate the stack.
;; A normal GC will leave huge amounts of storage unreclaimed
;; (over 50% on x86). This needs to be done by a single function
;; since the GC will invalidate the stack.
- #!+gencgc (gc-and-save (unix-namestring core-file-name nil)))
+ #!+gencgc (gc-and-save (unix-namestring core-file-name nil)
+ (if executable 1 0)))
(without-gcing
(save (unix-namestring core-file-name nil)
(without-gcing
(save (unix-namestring core-file-name nil)
- (get-lisp-obj-address #'restart-lisp)))))
+ (get-lisp-obj-address #'restart-lisp)
+ (if executable 1 0)))))
;; Save the restart function into a static symbol, to allow GC-AND-SAVE
;; access to it even after the GC has moved it.
#!+gencgc
;; Save the restart function into a static symbol, to allow GC-AND-SAVE
;; access to it even after the GC has moved it.
#!+gencgc
@@
-135,7
+145,7
@@
sufficiently motivated to do lengthy fixes."
(dolist (hook *save-hooks*)
(with-simple-restart (continue "Skip this save hook.")
(funcall hook)))
(dolist (hook *save-hooks*)
(with-simple-restart (continue "Skip this save hook.")
(funcall hook)))
- (when (fboundp 'cancel-finalization)
+ #!-win32 (when (fboundp 'cancel-finalization)
(cancel-finalization sb!sys:*tty*))
(profile-deinit)
(debug-deinit)
(cancel-finalization sb!sys:*tty*))
(profile-deinit)
(debug-deinit)