1.0.41.8: x86/x86-64: Weaken read and write barrier operations.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 5 Aug 2010 21:24:33 +0000 (21:24 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 5 Aug 2010 21:24:33 +0000 (21:24 +0000)
  * It turns out that the read-barrier operation is only needed on
Pentium Pro systems for SMP operation.  This never worked right,
so there's no need to penalize other systems to support this.

  * It turns out that the write-barrier operation is only needed
on OOSTORE systems for SMP operation.  Thsi never worked right, so
there's no need to penalize other systems to support this.

  * It turns out that x86-64 systems are neither Pentium Pro nor
OOSTORE.

  * This breaks down if the barriers were required for device I/O
instead of SMP operation.  Should anyone actually need such
barriers, adding them to the existing framework separately should
be simple enough.

src/compiler/x86-64/system.lisp
src/compiler/x86/system.lisp
version.lisp-expr

index 11867f9..1edf735 100644 (file)
@@ -381,15 +381,13 @@ number of CPU cycles elapsed as secondary value. EXPERIMENTAL."
 (define-vop (%read-barrier)
   (:policy :fast-safe)
   (:translate %read-barrier)
-  (:generator 3
-    (inst lfence)))
+  (:generator 3))
 
 #!+memory-barrier-vops
 (define-vop (%write-barrier)
   (:policy :fast-safe)
   (:translate %write-barrier)
-  (:generator 3
-    (inst sfence)))
+  (:generator 3))
 
 #!+memory-barrier-vops
 (define-vop (%data-dependency-barrier)
index 77981e8..fd14fbf 100644 (file)
@@ -372,15 +372,13 @@ number of CPU cycles elapsed as secondary value. EXPERIMENTAL."
 (define-vop (%read-barrier)
   (:policy :fast-safe)
   (:translate %read-barrier)
-  (:generator 3
-    (inst add (make-ea :dword :base esp-tn) 0 :lock)))
+  (:generator 3))
 
 #!+memory-barrier-vops
 (define-vop (%write-barrier)
   (:policy :fast-safe)
   (:translate %write-barrier)
-  (:generator 3
-    (inst add (make-ea :dword :base esp-tn) 0 :lock)))
+  (:generator 3))
 
 #!+memory-barrier-vops
 (define-vop (%data-dependency-barrier)
index 432bb89..b98da0b 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.41.7"
+"1.0.41.8"