1.0.4.52: fix GET-SPINLOCK, broken by the COMPARE-AND-EXCHANGE patch
authorNikodemus Siivola <nikodemus@random-state.net>
Mon, 9 Apr 2007 09:48:26 +0000 (09:48 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Mon, 9 Apr 2007 09:48:26 +0000 (09:48 +0000)
 * It was behaving as "TRY-SPINLOCK". Oops.
 * Our test suite did catch this, but it was being masked by other errors.

src/code/target-thread.lisp
version.lisp-expr

index c719833..37d95c7 100644 (file)
@@ -197,7 +197,8 @@ in future versions."
   ;; %instance-set-conditional can test for 0 (which is a fixnum) and
   ;; store any value
   #!+sb-thread
-  (compare-and-exchange-spinlock-value spinlock 0 1)
+  (loop until
+       (eql 0 (compare-and-exchange-spinlock-value spinlock 0 1)))
   t)
 
 (defun release-spinlock (spinlock)
index 9641910..bdb5493 100644 (file)
@@ -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".)
-"1.0.4.51"
+"1.0.4.52"