The enclosed tiny patch enables support for return-from-frame ("R" in sldb or DEBUG-RETURN in CMUCL debugger) in CMUCL. You need the latest (09/2004) CMUCL snapshot and optimization set to (debug 3) to use it.
--J.
ChangeLog entry:
2004-09-05 Jan Rychter jan@rychter.com
* swank-cmucl.lisp (return-from-frame): Add it.
------------------------------------------------------------------------- Index: swank-cmucl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-cmucl.lisp,v retrieving revision 1.113 diff -u -3 -p -u -r1.113 swank-cmucl.lisp --- swank-cmucl.lisp 28 Aug 2004 02:27:08 -0000 1.113 +++ swank-cmucl.lisp 2 Sep 2004 16:35:30 -0000 @@ -1511,6 +1511,14 @@ A utility for debugging DEBUG-FUNCTION-A (defimplementation frame-catch-tags (index) (mapcar #'car (di:frame-catches (nth-frame index))))
+;; This requires a custom patch to CMUCL at the moment, hopefully this +;; will be incorporated into CMUCL soon. +(defimplementation return-from-frame (index form) + (let* ((frame (nth-frame index)) + (probe (di::find-debug-tag-for-frame frame))) + (cond (probe (throw (car probe) (eval-in-frame form index))) + (t (format nil "Cannot return from frame: ~S" frame))))) + (defun set-step-breakpoints (frame) (when (di:debug-block-elsewhere-p (di:code-location-debug-block (di:frame-code-location frame)))