Optimize RESTART-BIND.
[sbcl.git] / src / code / target-error.lisp
index 9a7aa8f..d92a978 100644 (file)
 (declaim (inline restart-test-function
                  restart-associated-conditions
                  (setf restart-associated-conditions)))
-(defstruct (restart (:copier nil) (:predicate nil))
+(defstruct (restart (:constructor make-restart
+                        ;; Having TEST-FUNCTION at the end allows
+                        ;; to not replicate its default value in RESTART-BIND.
+                        (name function
+                         &optional report-function
+                                   interactive-function
+                                   test-function))
+                    (:copier nil) (:predicate nil))
   (name (missing-arg) :type symbol :read-only t)
   (function (missing-arg) :type function :read-only t)
   (report-function nil :type (or null function) :read-only t)
@@ -50,6 +57,8 @@
   ;; extent.
   (associated-conditions '() :type list))
 
+#!-sb-fluid (declaim (freeze-type restart))
+
 (def!method print-object ((restart restart) stream)
   (if *print-escape*
       (print-unreadable-object (restart stream :type t :identity t)