[slime-cvs] CVS slime

CVS User heller heller at common-lisp.net
Sat Oct 31 08:22:56 UTC 2009


Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv25063

Modified Files:
	ChangeLog swank-backend.lisp swank-ccl.lisp 
Log Message:
* swank-ccl.lisp (kill-thread): Don't signal conditions.
* swank-backend.lisp (kill-thread): Update docstring.

--- /project/slime/cvsroot/slime/ChangeLog	2009/10/30 19:39:34	1.1898
+++ /project/slime/cvsroot/slime/ChangeLog	2009/10/31 08:22:56	1.1899
@@ -1,3 +1,8 @@
+2009-10-31  Helmut Eller  <heller at common-lisp.net>
+
+	* swank-ccl.lisp (kill-thread): Don't signal conditions.
+	* swank-backend.lisp (kill-thread): Update docstring.
+
 2009-10-30  Stas Boukarev  <stassats at gmail.com>
 
 	* swank-loader.lisp (setup): Use EXT:PROBE-DIRECTORY on Clisp,
--- /project/slime/cvsroot/slime/swank-backend.lisp	2009/09/20 09:39:16	1.181
+++ /project/slime/cvsroot/slime/swank-backend.lisp	2009/10/31 08:22:56	1.182
@@ -1057,7 +1057,9 @@
   "Cause THREAD to execute FN.")
 
 (definterface kill-thread (thread)
-  "Kill THREAD."
+  "Terminate THREAD immediately.
+Don't execute unwind-protected sections, don't raise conditions.
+(Do not pass go, do not collect $200.)"
   (declare (ignore thread))
   nil)
 
--- /project/slime/cvsroot/slime/swank-ccl.lisp	2009/10/30 10:57:55	1.9
+++ /project/slime/cvsroot/slime/swank-ccl.lisp	2009/10/31 08:22:56	1.10
@@ -720,10 +720,14 @@
   (queue '() :type list))
 
 (defimplementation spawn (fun &key name)
-  (ccl:process-run-function 
-   (or name "Anonymous (Swank)")
-   fun))
-
+  (flet ((entry ()
+           (handler-bind ((ccl:process-reset (lambda (c) 
+                                               (return-from entry c))))
+             (funcall fun))))
+    (ccl:process-run-function 
+     (or name "Anonymous (Swank)")
+     #'entry)))
+  
 (defimplementation thread-id (thread)
   (ccl:process-serial-number thread))
 
@@ -753,7 +757,8 @@
   (ccl:all-processes))
 
 (defimplementation kill-thread (thread)
-  (ccl:process-kill thread))
+  ;;(ccl:process-kill thread) ; doesn't cut it
+  (ccl::process-initial-form-exited thread :kill))
 
 (defimplementation thread-alive-p (thread)
   (not (ccl:process-exhausted-p thread)))





More information about the slime-cvs mailing list