[cleanup] Rename base::MemoryBarrier to base::MemoryFence.
This reduces confusion with GC write barrier. The word "barrier" is reserved for GC write barrier and "fence" for memory ordering fence. BUG=v8:6474 Change-Id: Ic4352f04430eaca742b72db1580ee0a42a1ffefb Reviewed-on: https://chromium-review.googlesource.com/528103 Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#45813}
This commit is contained in:
parent
2082009796
commit
ac3e4e0127
@ -36,15 +36,6 @@
|
||||
#include "src/base/base-export.h"
|
||||
#include "src/base/build_config.h"
|
||||
|
||||
#if defined(V8_OS_WIN) && defined(V8_HOST_ARCH_64_BIT)
|
||||
// windows.h #defines this (only on x64). This causes problems because the
|
||||
// public API also uses MemoryBarrier at the public name for this fence. So, on
|
||||
// X64, undef it, and call its documented
|
||||
// (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684208.aspx)
|
||||
// implementation directly.
|
||||
#undef MemoryBarrier
|
||||
#endif
|
||||
|
||||
namespace v8 {
|
||||
namespace base {
|
||||
|
||||
@ -94,9 +85,8 @@ Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
|
||||
// a store with appropriate memory-ordering instructions. "Acquire" operations
|
||||
// ensure that no later memory access can be reordered ahead of the operation.
|
||||
// "Release" operations ensure that no previous memory access can be reordered
|
||||
// after the operation. "Barrier" operations have both "Acquire" and "Release"
|
||||
// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory
|
||||
// access.
|
||||
// after the operation. "Fence" operations have both "Acquire" and "Release"
|
||||
// semantics. A MemoryFence() has "Fence" semantics, but does no memory access.
|
||||
Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
Atomic32 new_value);
|
||||
@ -104,7 +94,7 @@ Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
Atomic32 new_value);
|
||||
|
||||
void MemoryBarrier();
|
||||
void MemoryFence();
|
||||
void Relaxed_Store(volatile Atomic8* ptr, Atomic8 value);
|
||||
void Relaxed_Store(volatile Atomic32* ptr, Atomic32 value);
|
||||
void Release_Store(volatile Atomic32* ptr, Atomic32 value);
|
||||
|
@ -39,7 +39,7 @@ namespace base {
|
||||
// This implementation is transitional and maintains the original API for
|
||||
// atomicops.h.
|
||||
|
||||
inline void MemoryBarrier() {
|
||||
inline void MemoryFence() {
|
||||
#if defined(__GLIBCXX__)
|
||||
// Work around libstdc++ bug 51038 where atomic_thread_fence was declared but
|
||||
// not defined, leading to the linker complaining about undefined references.
|
||||
|
@ -10,15 +10,6 @@
|
||||
#include "src/base/macros.h"
|
||||
#include "src/base/win32-headers.h"
|
||||
|
||||
#if defined(V8_HOST_ARCH_64_BIT)
|
||||
// windows.h #defines this (only on x64). This causes problems because the
|
||||
// public API also uses MemoryBarrier at the public name for this fence. So, on
|
||||
// X64, undef it, and call its documented
|
||||
// (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684208.aspx)
|
||||
// implementation directly.
|
||||
#undef MemoryBarrier
|
||||
#endif
|
||||
|
||||
namespace v8 {
|
||||
namespace base {
|
||||
|
||||
@ -49,15 +40,7 @@ inline Atomic32 Relaxed_AtomicIncrement(volatile Atomic32* ptr,
|
||||
return Barrier_AtomicIncrement(ptr, increment);
|
||||
}
|
||||
|
||||
inline void MemoryBarrier() {
|
||||
#if defined(V8_HOST_ARCH_64_BIT)
|
||||
// See #undef and note at the top of this file.
|
||||
__faststorefence();
|
||||
#else
|
||||
// We use MemoryBarrier from WinNT.h
|
||||
::MemoryBarrier();
|
||||
#endif
|
||||
}
|
||||
inline void MemoryFence() { MemoryBarrier(); }
|
||||
|
||||
inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
|
@ -37,7 +37,7 @@
|
||||
#define _TRUNCATE 0
|
||||
#define STRUNCATE 80
|
||||
|
||||
inline void MemoryBarrier() {
|
||||
inline void MemoryFence() {
|
||||
int barrier = 0;
|
||||
__asm__ __volatile__("xchgl %%eax,%0 ":"=r" (barrier));
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ SamplingCircularQueue<T, L>::~SamplingCircularQueue() {
|
||||
|
||||
template<typename T, unsigned L>
|
||||
T* SamplingCircularQueue<T, L>::Peek() {
|
||||
base::MemoryBarrier();
|
||||
base::MemoryFence();
|
||||
if (base::Acquire_Load(&dequeue_pos_->marker) == kFull) {
|
||||
return &dequeue_pos_->record;
|
||||
}
|
||||
@ -41,7 +41,7 @@ void SamplingCircularQueue<T, L>::Remove() {
|
||||
|
||||
template<typename T, unsigned L>
|
||||
T* SamplingCircularQueue<T, L>::StartEnqueue() {
|
||||
base::MemoryBarrier();
|
||||
base::MemoryFence();
|
||||
if (base::Acquire_Load(&enqueue_pos_->marker) == kEmpty) {
|
||||
return &enqueue_pos_->record;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user