[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