0.pre7.86.flaky7.7:
authorWilliam Harold Newman <william.newman@airmail.net>
Wed, 14 Nov 2001 02:25:54 +0000 (02:25 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Wed, 14 Nov 2001 02:25:54 +0000 (02:25 +0000)
split REPL out of TOPLEVEL-REPL, partly for style, partly as
part of a hack to try in debugging
REPL shouldn't need two levels of LOOP.

src/code/interr.lisp
src/code/toplevel.lisp
version.lisp-expr

index 7aefbbc..77521d3 100644 (file)
 \f
 ;;;; INTERNAL-ERROR signal handler
 
+(defvar *internal-error-arguments*)
+
 (defun internal-error (context continuable)
   (declare (type system-area-pointer context))
   (declare (ignore continuable))
         (sb!vm:internal-error-arguments alien-context)
        (/show0 "back from INTERNAL-ERROR-ARGUMENTS, ERROR-NUMBER=..")
        (/hexstr error-number)
-       (/show0 "ARGUMENTS=..")
+       (/show0 "cold/low ARGUMENTS=..")
        (/hexstr arguments)
+       (/show (mapcar #'type-of arguments))
+       (dolist (argument arguments)
+        (/show argument))
        (multiple-value-bind (name sb!debug:*stack-top-hint*)
           (find-interrupted-name)
         (/show0 "back from FIND-INTERRUPTED-NAME")
index 9196734..5897b71 100644 (file)
        (+ nil) (++ nil) (+++ nil)
        (/// nil) (// nil) (/ nil)
        (eof-marker (cons :eof nil)))
-    (loop
-      (/show0 "at head of outer LOOP in TOPLEVEL-REPL")
-      ;; There should only be one TOPLEVEL restart, and it's here, so
-      ;; restarting at TOPLEVEL always bounces you all the way out here.
-      (with-simple-restart (toplevel
-                           "Restart at toplevel READ/EVAL/PRINT loop.")
-       ;; We add a new ABORT restart for every debugger level, so 
-       ;; restarting at ABORT in a nested debugger gets you out to the
-        ;; innermost enclosing debugger, and only when you're in the
-        ;; outermost, unnested debugger level does restarting at ABORT 
-       ;; get you out to here.
-        (with-simple-restart (abort
-                             "Reduce debugger level (leaving debugger).")
-         (catch 'toplevel-catcher
-           (sb!unix:unix-sigsetmask 0) ; FIXME: What is this for?
-           (/show0 "about to enter inner LOOP in TOPLEVEL-REPL")
-           (loop ; FIXME: Do we need this inner LOOP?
-            ;; FIXME: It seems bad to have GC behavior depend on scrubbing
-            ;; the control stack before each interactive command. Isn't
-            ;; there some way we can convince the GC to just ignore
-            ;; dead areas of the control stack, so that we don't need to
-            ;; rely on this half-measure?
-            (scrub-control-stack)
-            (unless noprint
+    (/show0 "about to set up restarts in TOPLEVEL-REPL")
+    ;; There should only be one TOPLEVEL restart, and it's here, so
+    ;; restarting at TOPLEVEL always bounces you all the way out here.
+    (with-simple-restart (toplevel
+                         "Restart at toplevel READ/EVAL/PRINT loop.")
+      ;; We add a new ABORT restart for every debugger level, so 
+      ;; restarting at ABORT in a nested debugger gets you out to the
+      ;; innermost enclosing debugger, and only when you're in the
+      ;; outermost, unnested debugger level does restarting at ABORT 
+      ;; get you out to here.
+      (with-simple-restart (abort "Reduce debugger level (leaving debugger).")
+       (catch 'toplevel-catcher
+         (sb!unix:unix-sigsetmask 0)   ; FIXME: What is this for?
+         (repl noprint))))))
+
+(defun repl (noprint)
+  (/show0 "entering REPL")
+  (loop
+   ;; FIXME: It seems bad to have GC behavior depend on scrubbing the
+   ;; control stack before each interactive command. Isn't there some
+   ;; way we can convince the GC to just ignore dead areas of the
+   ;; control stack, so that we don't need to rely on this
+   ;; half-measure?
+   (scrub-control-stack)
+   (unless noprint
+     (fresh-line)
+     (princ (if (functionp *prompt*)
+               (funcall *prompt*)
+               *prompt*))
+     (flush-standard-output-streams))
+   (let ((form (read *standard-input* nil eof-marker)))
+     (if (eq form eof-marker)
+        (quit)
+        (let ((results (multiple-value-list (interactive-eval form))))
+          (unless noprint
+            (dolist (result results)
               (fresh-line)
-              (princ (if (functionp *prompt*)
-                         (funcall *prompt*)
-                         *prompt*))
-              (flush-standard-output-streams))
-            (let ((form (read *standard-input* nil eof-marker)))
-              (if (eq form eof-marker)
-                  (quit)
-                  (let ((results
-                         (multiple-value-list (interactive-eval form))))
-                    (unless noprint
-                      (dolist (result results)
-                        (fresh-line)
-                        (prin1 result)))))))))))))
+              (prin1 result))))))))
 
 (defun noprogrammer-debugger-hook-fun (condition old-debugger-hook)
   (declare (ignore old-debugger-hook))
index 3cdda55..bab9913 100644 (file)
@@ -18,4 +18,4 @@
 ;;; for internal versions, especially for internal versions off the
 ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre7.86.flaky7.6"
+"0.pre7.86.flaky7.7"