Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv11001
220.127.116.11: MUTEX refactoring & optimization
* (SETF MUTEX-VALUE) removed entirely. Using it was never sane,
and in the new setup entirely broken.
* On futex platforms, keep track of state of the mutex: free, taken,
or contested (taken and may have one ore more threads waiting).
* On release, if the mutex is not contested, there is no need to
perform the wakeup.
* Document assumptions made by GET-MUTEX & RELEASE-MUTEX better.
* Update FASL version.
RCS file: /cvsroot/sbcl/sbcl/NEWS,v
retrieving revision 1.1256
retrieving revision 1.1257
diff -u -d -r1.1256 -r1.1257
--- NEWS 5 Oct 2007 14:00:08 -0000 1.1256
+++ NEWS 5 Oct 2007 14:48:40 -0000 1.1257
@@ -7,6 +7,8 @@
locking at the correct granularity. In the current implementation it is
still safe to have multiple readers access the same table, but it's not
guaranteed that this property will be maintained in future releases.
+ * minor incompatible change: (SETF MUTEX-VALUE) is not longer supported,
+ and will signal an error at runtime.
* enhancement: SB-THREAD package now exports a semaphore interface.
* enhancement: CONS can now stack-allocate on x86 and
x86-64. (Earlier LIST and LIST* supported stack-allocation, but
@@ -16,6 +18,8 @@
* enhancement: dynamic-extent support has been extended to support
cases where there are multiple possible sources for the stack
+ * optimization: RELEASE-MUTEX no longer needs to perform a syscall
+ if the mutex is uncontested on Linux.
* bug fix: symbol-macro expansion now uses the *MACROEXPAND-HOOK*
as specified by the CLHS. (thanks to Tobias Rittweiler)
RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v
retrieving revision 1.3667
retrieving revision 1.3668
diff -u -d -r1.3667 -r1.3668
--- version.lisp-expr 5 Oct 2007 14:00:09 -0000 1.3667
+++ version.lisp-expr 5 Oct 2007 14:48:40 -0000 1.3668
@@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)