X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcold-init.lisp;h=c9b734a9699b31ae1aefb88b773bcb3ab9c4cfd4;hb=c548f73e8dd676d6ec4576eba6ab661a5061bdfe;hp=202a479cf393355ec2fb61ab8b143abaf345fdcd;hpb=47eb330ef0f3b99d24c0e24d897b757f16950c4b;p=sbcl.git diff --git a/src/code/cold-init.lisp b/src/code/cold-init.lisp index 202a479..c9b734a 100644 --- a/src/code/cold-init.lisp +++ b/src/code/cold-init.lisp @@ -96,14 +96,21 @@ *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 + *allow-with-interrupts* t + *interrupts-enabled* t + *interrupt-pending* nil *break-on-signals* nil *maximum-error-depth* 10 *current-error-depth* 0 *cold-init-complete-p* nil - *type-system-initialized* nil) + *type-system-initialized* nil + sb!vm:*alloc-signal* 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,7 +118,11 @@ ;; 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) (show-and-call !early-package-cold-init) (show-and-call !package-cold-init) @@ -144,6 +155,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 @@ -214,22 +226,14 @@ (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) - ;; FIXME: This list of modes should be defined in one place and - ;; explicitly shared between here and REINIT. - - ;; FIXME: For some unknown reason, NetBSD/x86 won't run with the - ;; :invalid trap enabled. That should be fixed, but not today... - ;; PEM -- April 5, 2004 - (set-floating-point-modes - :traps '(:overflow #!-netbsd :invalid :divide-by-zero)) + (show-and-call float-cold-init-or-reinit) (show-and-call !class-finalize) @@ -285,26 +289,23 @@ UNIX-like systems, UNIX-STATUS is used as the status code." (defun reinit () (setf *default-external-format* nil) - (without-interrupts - (without-gcing - (os-cold-init-or-reinit) - (thread-init-or-reinit) - (stream-reinit) - (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 - ;; disabled by default. Joe User can explicitly enable them if - ;; desired. - ;; - ;; see also comment at the previous SET-FLOATING-POINT-MODES - ;; call site. - (set-floating-point-modes - :traps '(:overflow #!-netbsd :invalid :divide-by-zero)))) + (setf sb!alien::*default-c-string-external-format* nil) + ;; WITHOUT-GCING implies 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)) (gc-reinit) - ;; make sure TIME works correctly from saved cores - (setf *internal-real-time-base-seconds* nil) (foreign-reinit) + (time-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))))