[slime-cvs] CVS update: slime/ChangeLog slime/PROBLEMS slime/swank-sbcl.lisp

Christophe Rhodes crhodes at common-lisp.net
Tue Jun 28 08:40:09 UTC 2005


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

Modified Files:
	ChangeLog PROBLEMS swank-sbcl.lisp 
Log Message:
Support sbcl 0.9.2

Date: Tue Jun 28 10:40:08 2005
Author: crhodes

Index: slime/ChangeLog
diff -u slime/ChangeLog:1.716 slime/ChangeLog:1.717
--- slime/ChangeLog:1.716	Tue Jun 21 20:28:58 2005
+++ slime/ChangeLog	Tue Jun 28 10:40:07 2005
@@ -1,3 +1,8 @@
+2005-06-28  Gabor Melis <mega at hotpop.com>
+
+	* swank-sbcl.lisp (threaded stuff): horrible hack to make threaded
+	SBCL 0.9.2 work.  (also, Happy Birthday Christophe!)
+
 2005-06-21  Edi Weitz  <edi at agharta.de>
 
 	* swank.lisp (find-matching-packages): Also use nicknames.


Index: slime/PROBLEMS
diff -u slime/PROBLEMS:1.6 slime/PROBLEMS:1.7
--- slime/PROBLEMS:1.6	Tue Jun  7 12:06:51 2005
+++ slime/PROBLEMS	Tue Jun 28 10:40:07 2005
@@ -21,8 +21,9 @@
 
 ** SBCL
 
-SBCL versions from 0.8.15 to 0.8.21 should work.  Newer SBCL's may or
-may not work.  Don't use multithreading with 2.4 kernels.
+The latest released version of SBCL at the time of packaging should
+work.  Older or newer SBCLs may or may not work.  Do not use
+multithreading with unpatched 2.4 Linux kernels.
 
 The (v)iew-source command in the debugger can only locate exact source
 forms for code compiled at (debug 2) or higher. The default level is


Index: slime/swank-sbcl.lisp
diff -u slime/swank-sbcl.lisp:1.134 slime/swank-sbcl.lisp:1.135
--- slime/swank-sbcl.lisp:1.134	Sat Jun 11 18:22:23 2005
+++ slime/swank-sbcl.lisp	Tue Jun 28 10:40:07 2005
@@ -1095,14 +1095,15 @@
   (defimplementation startup-multiprocessing ())
 
   (defimplementation thread-id (thread)
-    thread)
+    (assert (eql (ash (ash thread -5) 5) thread))
+    (ash thread -5))
 
   (defimplementation find-thread (id)
-    (if (member id (all-threads))
-        id))
+    (when (member (ash id 5) (all-threads))
+      (ash id 5)))
   
   (defimplementation thread-name (thread)
-    (format nil "Thread ~D" thread))
+    (format nil "Thread ~D" (thread-id thread)))
 
   (defun %thread-state-slot (thread)
     (sb-sys:without-gcing
@@ -1133,12 +1134,13 @@
     (sb-thread:current-thread-id))
 
   (defimplementation all-threads ()
-    (let ((pids (sb-sys:without-gcing
+    (let ((tids (sb-sys:without-gcing
                  (sb-thread::mapcar-threads
                   (lambda (sap)
-                    (sb-sys:sap-ref-32 sap (* sb-vm:n-word-bytes
-                                              sb-vm::thread-pid-slot)))))))
-      (remove :dead pids :key #'%thread-state)))
+                    (sb-sys:sap-ref-32 sap
+                                       (* sb-vm:n-word-bytes
+                                          sb-vm::thread-os-thread-slot)))))))
+      (remove :dead tids :key #'%thread-state)))
  
   (defimplementation interrupt-thread (thread fn)
     (sb-thread:interrupt-thread thread fn))




More information about the slime-cvs mailing list