[slime-cvs] CVS update: slime/swank-cmucl.lisp

Helmut Eller heller at common-lisp.net
Fri Jul 30 21:39:15 UTC 2004


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

Modified Files:
	swank-cmucl.lisp 
Log Message:
(call-with-debugging-environment): Only handle di::unhandled-condition
not all DI:DEBUG-CONDITIONs.

Date: Fri Jul 30 14:39:15 2004
Author: heller

Index: slime/swank-cmucl.lisp
diff -u slime/swank-cmucl.lisp:1.111 slime/swank-cmucl.lisp:1.112
--- slime/swank-cmucl.lisp:1.111	Mon Jul 19 07:00:17 2004
+++ slime/swank-cmucl.lisp	Fri Jul 30 14:39:15 2004
@@ -84,7 +84,6 @@
   (ext:close-socket (socket-fd socket)))
 
 (defimplementation accept-connection (socket)
-  #+mp (mp:process-wait-until-fd-usable socket :input)
   (make-socket-io-stream (ext:accept-tcp-connection socket)))
 
 ;;;;; Sockets
@@ -378,7 +377,12 @@
                                    source-path file)))))
         ((and (eq file :lisp) (stringp source))
          ;; No location known, but we have the source form.
-         ;; XXX How is this case triggered? -luke (16/May/2004)
+         ;; XXX How is this case triggered?  -luke (16/May/2004) 
+         ;; This can happen if the compiler needs to expand a macro
+         ;; but the macro-expander is not yet compiled.  Calling the
+         ;; (interpreted) macro-expander triggers IR1 conversion of
+         ;; the lambda expression for the expander and invokes the
+         ;; compiler recursively.
          (make-location (list :source-form source)
                         (list :position 1)))))
 
@@ -1447,21 +1451,25 @@
   (unix:unix-sigsetmask 0)
   (let* ((*sldb-stack-top* (or debug:*stack-top-hint* (di:top-frame)))
 	 (debug:*stack-top-hint* nil))
-    (handler-bind ((di:debug-condition 
+    (handler-bind ((di::unhandled-condition
 		    (lambda (condition)
-                      (signal (make-condition
-                               'sldb-condition
-                               :original-condition condition)))))
+                      (error (make-condition
+                              'sldb-condition
+                              :original-condition condition)))))
       (funcall debugger-loop-fn))))
 
+(defun frame-down (frame)
+  (handler-case (di:frame-down frame)
+    (di:no-debug-info () nil)))
+
 (defun nth-frame (index)
-  (do ((frame *sldb-stack-top* (di:frame-down frame))
+  (do ((frame *sldb-stack-top* (frame-down frame))
        (i index (1- i)))
       ((zerop i) frame)))
 
 (defimplementation compute-backtrace (start end)
   (let ((end (or end most-positive-fixnum)))
-    (loop for f = (nth-frame start) then (di:frame-down f)
+    (loop for f = (nth-frame start) then (frame-down f)
 	  for i from start below end
 	  while f
 	  collect f)))





More information about the slime-cvs mailing list