(setf (svref *!load-time-values* (third toplevel-thing))
(funcall (second toplevel-thing))))
(:load-time-value-fixup
- (setf (sap-ref-32 (second toplevel-thing) 0)
+ (setf (sap-ref-word (second toplevel-thing) 0)
(get-lisp-obj-address
(svref *!load-time-values* (third toplevel-thing)))))
- #!+(and x86 gencgc)
+ #!+(and (or x86 x86-64) gencgc)
(:load-time-code-fixup
(sb!vm::!envector-load-time-code-fixup (second toplevel-thing)
(third toplevel-thing)
;; The show is on.
(terpri)
(/show0 "going into toplevel loop")
- (handling-end-of-the-world
+ (handling-end-of-the-world
+ (thread-init-or-reinit)
(toplevel-init)
(critically-unreachable "after TOPLEVEL-INIT")))
\f
;;;; initialization functions
+(defun thread-init-or-reinit ()
+ (sb!thread::init-job-control)
+ (sb!thread::get-foreground))
+
(defun reinit ()
(without-interrupts
(without-gcing
- (os-cold-init-or-reinit)
+ (os-cold-init-or-reinit)
(stream-reinit)
(signal-cold-init-or-reinit)
(setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t)
(set-floating-point-modes
:traps '(:overflow #!-netbsd :invalid :divide-by-zero))
(sb!thread::maybe-install-futex-functions)))
- (foreign-reinit)
+ (thread-init-or-reinit)
(gc-reinit)
;; make sure TIME works correctly from saved cores
(setf *internal-real-time-base-seconds* nil)
- (mapc #'funcall *init-hooks*))
+ (foreign-reinit)
+ (dolist (hook *init-hooks*)
+ (with-simple-restart (continue "Skip this initialization hook.")
+ (funcall hook))))
\f
;;;; some support for any hapless wretches who end up debugging cold
;;;; init code