From a7ec2f1af6881c93585d97fb2fdcdfd98006f217 Mon Sep 17 00:00:00 2001 From: Alastair Bridgewater Date: Thu, 5 Aug 2010 21:24:33 +0000 Subject: [PATCH] 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. --- src/compiler/x86-64/system.lisp | 6 ++---- src/compiler/x86/system.lisp | 6 ++---- version.lisp-expr | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) 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" -- 1.7.10.4