Comments and rearrangements in {defboot,target-error}.lisp
authorJan Moringen <jmoringe@techfak.uni-bielefeld.de>
Fri, 20 Sep 2013 20:15:53 +0000 (22:15 +0200)
committerChristophe Rhodes <c.rhodes@gold.ac.uk>
Tue, 22 Oct 2013 10:30:20 +0000 (11:30 +0100)
Add and/or extend explanatory comments for the special
variables *HANDLER-CLUSTERS*, *RESTART-CLUSTERS*
and *CONDITION-RESTARTS*.

Slightly rearranged RESTART-NAME and RESTART-REPORT.

src/code/defboot.lisp
src/code/target-error.lisp

index 33b2650..16b2fa4 100644 (file)
@@ -405,8 +405,10 @@ evaluated as a PROGN."
 
 ;;; KLUDGE: we PROCLAIM these special here so that we can use restart
 ;;; macros in the compiler before the DEFVARs are compiled.
-(sb!xc:proclaim
- '(special *handler-clusters* *restart-clusters* *condition-restarts*))
+;;;
+;;; For an explanation of these data structures, see DEFVARs in
+;;; target-error.lisp.
+(sb!xc:proclaim '(special *handler-clusters* *restart-clusters* *condition-restarts*))
 
 (defmacro-mundanely with-condition-restarts
     (condition-form restarts-form &body body)
index be8c319..5e1ad55 100644 (file)
 ;;;; files for more information.
 
 (in-package "SB!KERNEL")
-\f
-;;; a list of lists of restarts
-(defvar *restart-clusters* '())
-
-;;; an ALIST (condition . restarts) which records the restarts currently
-;;; associated with Condition
-(defvar *condition-restarts* ())
 
 (defun muffle-warning-p (warning)
   (declare (special *muffled-warnings*))
                      (when (muffle-warning-p warning)
                        (muffle-warning warning)))))))
 
+;;; an alist with elements of the form
+;;;
+;;;  (CONDITION . (HANDLER1 HANDLER2 ...))
+;;;
+;;; Recently established handlers are added at the beginning of the
+;;; list. Elements to the left of the alist take precedence over
+;;; elements to the right.
 (defvar *handler-clusters* (initial-handler-clusters))
 
+;;; a list of lists of currently active RESTART instances. maintained
+;;; by RESTART-BIND.
+(defvar *restart-clusters* '())
+
+;;; an ALIST with elements of the form
+;;;
+;;;   (CONDITION . (RESTART1 RESTART2 ...))
+;;;
+;;; which records the restarts currently associated with
+;;; conditions. maintained by WITH-CONDITION-RESTARTS.
+(defvar *condition-restarts* ())
+
 (defstruct (restart (:copier nil) (:predicate nil))
   (name (missing-arg) :type symbol :read-only t)
   (function (missing-arg) :type function)
         (prin1 (restart-name restart) stream))
       (restart-report restart stream)))
 
+#!+sb-doc
+(setf (fdocumentation 'restart-name 'function)
+      "Return the name of the given restart object.")
+
+(defun restart-report (restart stream)
+  (funcall (or (restart-report-function restart)
+               (lambda (stream)
+                 (format stream "~S" (or (restart-name restart)
+                                         restart))))
+           stream))
+
 (defvar *restart-test-stack* nil)
 
 (defun compute-restarts (&optional condition)
@@ -74,18 +97,6 @@ restarts associated with CONDITION (or with no condition) will be returned."
              (res restart)))))
       (res))))
 
-#!+sb-doc
-(setf (fdocumentation 'restart-name 'function)
-      "Return the name of the given restart object.")
-
-(defun restart-report (restart stream)
-  (funcall (or (restart-report-function restart)
-               (let ((name (restart-name restart)))
-                 (lambda (stream)
-                   (if name (format stream "~S" name)
-                       (format stream "~S" restart)))))
-           stream))
-
 (defun find-restart (identifier &optional condition)
   #!+sb-doc
   "Return the first restart identified by IDENTIFIER. If IDENTIFIER is a symbol,