X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcold-init.lisp;h=eb223cb1163e1444dca1e4c169fcf72d239eaefc;hb=dcb73f3edef1e31078fbe585e2fafbd26743efd7;hp=33378df7a379ef312a9a68c1e7ad3e7fc93ec46c;hpb=cd3332a71793f4bccee403162ad0daf60ad51fb2;p=sbcl.git diff --git a/src/code/cold-init.lisp b/src/code/cold-init.lisp index 33378df..eb223cb 100644 --- a/src/code/cold-init.lisp +++ b/src/code/cold-init.lisp @@ -93,8 +93,9 @@ ;; *TYPE-SYSTEM-INITIALIZED-WHEN-BOUND* so that it doesn't need to ;; be explicitly set in order to be meaningful. (setf *after-gc-hooks* nil - *gc-inhibit* 1 - *need-to-collect-garbage* nil + *gc-inhibit* t + *gc-pending* nil + #!+sb-thread *stop-for-gc-pending* #!+sb-thread nil sb!unix::*interrupts-enabled* t sb!unix::*interrupt-pending* nil *break-on-signals* nil @@ -103,6 +104,11 @@ *cold-init-complete-p* nil *type-system-initialized* nil) + ;; I'm not sure where eval is first called, so I put this first. + #!+sb-eval + (show-and-call sb!eval::!full-eval-cold-init) + + (show-and-call thread-init-or-reinit) (show-and-call !typecheckfuns-cold-init) ;; Anyone might call RANDOM to initialize a hash value or something; @@ -111,6 +117,7 @@ (show-and-call !random-cold-init) (show-and-call !character-database-cold-init) + (show-and-call !character-name-database-cold-init) (show-and-call !early-package-cold-init) (show-and-call !package-cold-init) @@ -143,6 +150,7 @@ (show-and-call !policy-cold-init-or-resanify) (/show0 "back from !POLICY-COLD-INIT-OR-RESANIFY") + (show-and-call !constantp-cold-init) (show-and-call !early-proclaim-cold-init) ;; KLUDGE: Why are fixups mixed up with toplevel forms? Couldn't @@ -213,11 +221,10 @@ (show-and-call os-cold-init-or-reinit) - (show-and-call thread-init-or-reinit) (show-and-call stream-cold-init-or-reset) (show-and-call !loader-cold-init) (show-and-call !foreign-cold-init) - (show-and-call signal-cold-init-or-reinit) + #!-win32 (show-and-call signal-cold-init-or-reinit) (/show0 "enabling internal errors") (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) @@ -284,12 +291,13 @@ 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) - (signal-cold-init-or-reinit) + #!-win32 (signal-cold-init-or-reinit) (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t) ;; PRINT seems not to like x86 NPX denormal floats like ;; LEAST-NEGATIVE-SINGLE-FLOAT, so the :UNDERFLOW exceptions are @@ -303,7 +311,12 @@ UNIX-like systems, UNIX-STATUS is used as the status code." (gc-reinit) ;; make sure TIME works correctly from saved cores (setf *internal-real-time-base-seconds* nil) + (setf *gc-run-time* 0) (foreign-reinit) + ;; If the debugger was disabled in the saved core, we need to + ;; re-disable ldb again. + (when (eq *invoke-debugger-hook* 'sb!debug::debugger-disabled-hook) + (sb!debug::disable-debugger)) (dolist (hook *init-hooks*) (with-simple-restart (continue "Skip this initialization hook.") (funcall hook))))