X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fcold-init.lisp;h=dd51ecf17fb559d5c23d105e86651b3645fc189e;hb=f3666325b394cc61492be8aaf9621d66e7d9c0bd;hp=6a7123c97a5d16c175a2ba6067bc80189bcd5dbf;hpb=06c341ebab3da2e81effcaacc2235f2b1e8bfa82;p=sbcl.git diff --git a/src/code/cold-init.lisp b/src/code/cold-init.lisp index 6a7123c..dd51ecf 100644 --- a/src/code/cold-init.lisp +++ b/src/code/cold-init.lisp @@ -96,6 +96,7 @@ *gc-inhibit* t *gc-pending* nil #!+sb-thread *stop-for-gc-pending* #!+sb-thread nil + *allow-with-interrupts* t *interrupts-enabled* t *interrupt-pending* nil *break-on-signals* nil @@ -117,6 +118,9 @@ ;; this to be initialized, so we initialize it right away. (show-and-call !random-cold-init) + ;; Must be done before any non-opencoded array references are made. + (show-and-call !hairy-data-vector-reffer-init) + (show-and-call !character-database-cold-init) (show-and-call !character-name-database-cold-init) @@ -286,15 +290,15 @@ UNIX-like systems, UNIX-STATUS is used as the status code." (defun reinit () (setf *default-external-format* nil) (setf sb!alien::*default-c-string-external-format* nil) - (without-interrupts - (without-gcing - (os-cold-init-or-reinit) - (thread-init-or-reinit) - (stream-reinit) - #!-win32 - (signal-cold-init-or-reinit) - (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) - (float-cold-init-or-reinit))) + ;; WITHOUT-GCING implies WITHOUT-INTERRUPTS. + (without-gcing + (os-cold-init-or-reinit) + (thread-init-or-reinit) + (stream-reinit t) + #!-win32 + (signal-cold-init-or-reinit) + (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) + (float-cold-init-or-reinit)) (gc-reinit) (foreign-reinit) (time-reinit)