(format *error-output* "~&If continued: ")
(funcall (restart-report-function correctable) *error-output*))
(force-output *error-output*)
- (break-level condition)))
+ (when *break-enable* (break-level condition))))
(defun dbl-eval (- &aux (break-command t))
(t (setq break-command nil) (evalhook - nil nil *break-env*))))))
(cons break-command val-list)))
-(defun do-break-level (at env p-e-p debug-level break-level &aux (first t))
-
- (do nil (nil)
-
- (unless
- (with-simple-restart
- (abort "Return to debug level ~D." debug-level)
- (not
- (catch 'step-continue
- (let* ((*break-level* break-level)
- (*break-enable* (unless p-e-p *break-enable*))
- (*readtable* (or *break-readtable* *readtable*))
- *break-env* *read-suppress*); *error-stack*)
-
- (setq +++ ++ ++ + + -)
-
- (when first
- (catch-fatal 1)
- (setq *interrupt-enable* t first nil)
- (cond (p-e-p
- (format *debug-io* "~&~A~2%" at)
- (set-current)
- (setq *no-prompt* nil)
- (show-restarts))
- ((set-back at env))))
-
- (if *no-prompt*
- (setq *no-prompt* nil)
- (format *debug-io* "~&~a~a>~{~*>~}"
- (if p-e-p "" "dbl:")
- (if (eq *package* (find-package 'user)) "" (package-name *package*))
- break-level))
- (force-output *error-output*)
-
- (setq - (dbl-read *debug-io* nil *top-eof*))
- (when (eq - *top-eof*) (bye -1))
- (let* ((ev (dbl-eval -))
- (break-command (car ev))
- (values (cdr ev)))
- (and break-command (eq (car values) :resume)(return))
- (setq /// // // / / values *** ** ** * * (car /))
- (fresh-line *debug-io*)
- (dolist (val /)
- (prin1 val *debug-io*)
- (terpri *debug-io*)))
- nil))))
- (terpri *debug-io*)
- (break-current))))
+(defun dbl-rpl-loop (p-e-p)
+
+ (setq +++ ++ ++ + + -)
+
+ (if *no-prompt*
+ (setq *no-prompt* nil)
+ (format *debug-io* "~&~a~a>~{~*>~}"
+ (if p-e-p "" "dbl:")
+ (if (eq *package* (find-package 'user)) "" (package-name *package*))
+ *break-level*))
+ (force-output *error-output*)
+
+ (setq - (dbl-read *debug-io* nil *top-eof*))
+ (when (eq - *top-eof*) (bye -1))
+ (let* ((ev (dbl-eval -))
+ (break-command (car ev))
+ (values (cdr ev)))
+ (unless (and break-command (eq (car values) :resume))
+ (setq /// // // / / values *** ** ** * * (car /))
+ (fresh-line *debug-io*)
+ (dolist (val /)
+ (prin1 val *debug-io*)
+ (terpri *debug-io*))
+ (dbl-rpl-loop p-e-p))))
+
+(defun do-break-level (at env p-e-p debug-level); break-level
+
+ (unless
+ (with-simple-restart
+ (abort "Return to debug level ~D." debug-level)
+
+ (catch-fatal 1)
+ (setq *interrupt-enable* t)
+ (cond (p-e-p
+ (format *debug-io* "~&~A~2%" at)
+ (set-current)
+ (setq *no-prompt* nil)
+ (show-restarts))
+ ((set-back at env)))
+
+ (not (catch 'step-continue (dbl-rpl-loop p-e-p))))
+
+ (terpri *debug-io*)
+ (break-current)
+ (do-break-level at env p-e-p debug-level)))
(defun break-level (at &optional env)
(- -)
(* *) (** **) (*** ***)
(/ /) (// //) (/// ///)
- (break-level (if p-e-p (cons t *break-level*) *break-level*))
(debug-level *debug-level*)
(*quit-tags* (cons (cons *break-level* *quit-tag*) *quit-tags*))
*quit-tag*
+ (*break-level* (if p-e-p (cons t *break-level*) *break-level*))
(*ihs-base* (1+ *ihs-top*))
(*ihs-top* (ihs-top))
(*frs-base* (or (sch-frs-base *frs-top* *ihs-base*) (1+ (frs-top))))
(*debug-restarts* (compute-restarts))
(*debug-abort* (find-restart 'abort))
(*debug-continue* (find-restart 'continue))
- (*abort-restarts* (remove-if-not (lambda (x) (eq 'abort (restart-name x))) *debug-restarts*)))
+ (*abort-restarts* (remove-if-not (lambda (x) (eq 'abort (restart-name x))) *debug-restarts*))
+ (*readtable* (or *break-readtable* *readtable*))
+ *break-env* *read-suppress*)
- (do-break-level at env p-e-p debug-level break-level)))
+ (do-break-level at env p-e-p debug-level)))
(putprop 'break-level t 'compiler::cmp-notinline)
(setq message ""))))
(with-simple-restart
(continue "Return from break.")
- (let ((*break-enable* t)) (break-level message)))
+ (break-level message))
nil)
(putprop 'break t 'compiler::cmp-notinline)
'(COMMON-LISP::FTYPE
(COMMON-LISP::FUNCTION (COMMON-LISP::T) COMMON-LISP::T)
ANSI-LOOP::LOOP-EMIT-FINAL-VALUE SYSTEM::INSPECT-CHARACTER
- SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS
+ SYSTEM::INSPECT-STRUCTURE SYSTEM::PRINT-IHS SYSTEM::DBL-RPL-LOOP
SYSTEM::RESTART-FUNCTION COMMON-LISP::TANH COMMON-LISP::FIFTH
SLOOP::PARSE-LOOP-INITIALLY SYSTEM::NEXT-STACK-FRAME
SYSTEM::IDESCRIBE SYSTEM::PROCESS-ARGS SYSTEM::LEAP-YEAR-P
(COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
COMMON-LISP::T)
COMMON-LISP::T)
- SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION
+ SLOOP::FIRST-USE-SLOOP-FOR SYSTEM::COERCE-TO-CONDITION SYSTEM::DO-BREAK-LEVEL
SLOOP::FIRST-SLOOP-FOR ANSI-LOOP::LOOP-FOR-ARITHMETIC
SYSTEM::MAYBE-BREAK SYSTEM::SETF-STRUCTURE-ACCESS
SYSTEM::CALL-TEST SYSTEM::FIND-LINE-IN-FUN))
(COMMON-LISP::T COMMON-LISP::T COMMON-LISP::T
COMMON-LISP::T COMMON-LISP::T)
COMMON-LISP::T)
- SYSTEM::MAKE-PREDICATE SYSTEM::DO-BREAK-LEVEL
+ SYSTEM::MAKE-PREDICATE
SYSTEM::MAKE-CONSTRUCTOR))
(COMMON-LISP::PROCLAIM
'(COMMON-LISP::FTYPE
(COMMON-LISP::FUNCTION
(COMMON-LISP::FIXNUM COMMON-LISP::FIXNUM)
COMMON-LISP::FIXNUM)
- SYSTEM::ROUND-UP))
\ No newline at end of file
+ SYSTEM::ROUND-UP))