[slime-devel] return-from-frame for CMUCL

Jan Rychter jan at rychter.com
Sat Sep 4 15:59:51 UTC 2004


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 at 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)))






More information about the slime-devel mailing list