;;; specials initialized by !COLD-INIT
;;; FIXME: These could be converted to DEFVARs.
-(declaim (special *gc-inhibit* *need-to-collect-garbage*
- *after-gc-hooks*
- #!+(or x86 x86-64) *pseudo-atomic-atomic*
+(declaim (special #!+(or x86 x86-64) *pseudo-atomic-atomic*
#!+(or x86 x86-64) *pseudo-atomic-interrupted*
sb!unix::*interrupts-enabled*
sb!unix::*interrupt-pending*
"Evaluate FORM, returning whatever it returns and adjusting ***, **, *,
+++, ++, +, ///, //, /, and -."
(setf - form)
- (let ((results (multiple-value-list (eval form))))
- (setf /// //
- // /
- / results
- *** **
- ** *
- * (car results)))
- (setf +++ ++
- ++ +
- + -)
+ (unwind-protect
+ (let ((results (multiple-value-list (eval form))))
+ (setf /// //
+ // /
+ / results
+ *** **
+ ** *
+ * (car results)))
+ (setf +++ ++
+ ++ +
+ + -))
(unless (boundp '*)
;; The bogon returned an unbound marker.
;; FIXME: It would be safer to check every one of the values in RESULTS,
*error-output*
*query-io*
*standard-output*
- *trace-output*))
- (finish-output (symbol-value name)))
+ *trace-output*
+ *terminal-io*))
+ ;; FINISH-OUTPUT may block more easily than FORCE-OUTPUT
+ (force-output (symbol-value name)))
(values))
(defun process-init-file (truename)
(scrub-control-stack)
(sb!thread::get-foreground)
(unless noprint
+ (flush-standard-output-streams)
(funcall *repl-prompt-fun* *standard-output*)
;; (Should *REPL-PROMPT-FUN* be responsible for doing its own
;; FORCE-OUTPUT? I can't imagine a valid reason for it not to