[slime-cvs] CVS slime

CVS User heller heller at common-lisp.net
Wed Jan 9 14:29:12 UTC 2013


Update of /project/slime/cvsroot/slime
In directory tiger.common-lisp.net:/tmp/cvs-serv1521

Modified Files:
	ChangeLog swank-sbcl.lisp 
Log Message:
* swank-sbcl.lisp (frame-debug-vars): Only include :valid locals.
(*keep-non-valid-locals*): New.

--- /project/slime/cvsroot/slime/ChangeLog	2013/01/07 13:01:28	1.2382
+++ /project/slime/cvsroot/slime/ChangeLog	2013/01/09 14:29:10	1.2383
@@ -1,3 +1,8 @@
+2013-01-09  Helmut Eller  <heller at common-lisp.net>
+
+	* swank-sbcl.lisp (frame-debug-vars): Only include :valid locals.
+	(*keep-non-valid-locals*): New.
+
 2013-01-07  Helmut Eller  <heller at common-lisp.net>
 
 	* swank-ccl.lisp (compiler-warning-short-message): Add a method
--- /project/slime/cvsroot/slime/swank-sbcl.lisp	2012/12/03 03:43:16	1.325
+++ /project/slime/cvsroot/slime/swank-sbcl.lisp	2013/01/09 14:29:11	1.326
@@ -1270,9 +1270,18 @@
     (code-location-source-location
      (sb-di:frame-code-location (nth-frame index)))))
 
+(defvar *keep-non-valid-locals* nil)
+
 (defun frame-debug-vars (frame)
   "Return a vector of debug-variables in frame."
-  (sb-di::debug-fun-debug-vars (sb-di:frame-debug-fun frame)))
+  (let ((all-vars (sb-di::debug-fun-debug-vars (sb-di:frame-debug-fun frame))))
+    (cond (*keep-non-valid-locals* all-vars)
+          (t (let ((loc (sb-di:frame-code-location frame)))
+               (remove-if (lambda (var)
+                            (ecase (sb-di:debug-var-validity var loc)
+                              (:valid nil)
+                              ((:invalid :unknown) t)))
+                          all-vars))))))
 
 (defun debug-var-value (var frame location)
   (ecase (sb-di:debug-var-validity var location)





More information about the slime-cvs mailing list