(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")))
-(defun quit (&key recklessly-p
- (unix-code 0 unix-code-p)
- (unix-status unix-code))
+(defun quit (&key recklessly-p (unix-status 0))
#!+sb-doc
"Terminate the current Lisp. Things are cleaned up (with
UNWIND-PROTECT and so forth) unless RECKLESSLY-P is non-NIL. On
UNIX-like systems, UNIX-STATUS is used as the status code."
- (declare (type (signed-byte 32) unix-status unix-code))
+ (declare (type (signed-byte 32) unix-status))
(/show0 "entering QUIT")
- ;; FIXME: UNIX-CODE was deprecated in sbcl-0.6.8, after having been
- ;; around for less than a year. It should be safe to remove it after
- ;; a year.
- (when unix-code-p
- (warn "The UNIX-CODE argument is deprecated. Use the UNIX-STATUS argument
-instead (which is another name for the same thing)."))
(if recklessly-p
(sb!unix:unix-exit unix-status)
(throw '%end-of-the-world unix-status))
\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)
;; see also comment at the previous SET-FLOATING-POINT-MODES
;; call site.
(set-floating-point-modes
- :traps '(:overflow #!-netbsd :invalid :divide-by-zero))
- (sb!thread::maybe-install-futex-functions)))
- (foreign-reinit)
+ :traps '(:overflow #!-netbsd :invalid :divide-by-zero))))
+ (thread-init-or-reinit)
(gc-reinit)
- (mapc #'funcall *init-hooks*))
+ ;; make sure TIME works correctly from saved cores
+ (setf *internal-real-time-base-seconds* nil)
+ (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