From: Alastair Bridgewater Date: Thu, 5 Aug 2010 21:24:33 +0000 (+0000) Subject: 1.0.41.8: x86/x86-64: Weaken read and write barrier operations. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=a7ec2f1af6881c93585d97fb2fdcdfd98006f217;p=sbcl.git 1.0.41.8: x86/x86-64: Weaken read and write barrier operations. * 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. --- diff --git a/src/compiler/x86-64/system.lisp b/src/compiler/x86-64/system.lisp index 11867f9..1edf735 100644 --- a/src/compiler/x86-64/system.lisp +++ b/src/compiler/x86-64/system.lisp @@ -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) diff --git a/src/compiler/x86/system.lisp b/src/compiler/x86/system.lisp index 77981e8..fd14fbf 100644 --- a/src/compiler/x86/system.lisp +++ b/src/compiler/x86/system.lisp @@ -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) diff --git a/version.lisp-expr b/version.lisp-expr index 432bb89..b98da0b 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"