Modified: trunk/Source/WTF/ChangeLog (206467 => 206468)
--- trunk/Source/WTF/ChangeLog 2016-09-27 22:17:45 UTC (rev 206467)
+++ trunk/Source/WTF/ChangeLog 2016-09-27 23:20:56 UTC (rev 206468)
@@ -1,3 +1,18 @@
+2016-09-27 JF Bastien <[email protected]>
+
+ Atomics.h on Windows: remove seq_cst hack
+ https://bugs.webkit.org/show_bug.cgi?id=162022
+
+ Reviewed by Mark Lam.
+
+ No need to force access to seq_cst, always inlining fixes the MSVC warning.
+
+ * wtf/Atomics.h:
+ (WTF::Atomic::compareExchangeWeak): remove seq_cst hack
+ (WTF::Atomic::compareExchangeStrong): remove seq_cst hack
+ (WTF::Atomic::exchangeAndAdd): remove seq_cst hack
+ (WTF::Atomic::exchange): remove seq_cst hack
+
2016-09-27 Don Olmstead <[email protected]>
[CMake] Use CMake to determine HAVE_* defines
Modified: trunk/Source/WTF/wtf/Atomics.h (206467 => 206468)
--- trunk/Source/WTF/wtf/Atomics.h 2016-09-27 22:17:45 UTC (rev 206467)
+++ trunk/Source/WTF/wtf/Atomics.h 2016-09-27 23:20:56 UTC (rev 206468)
@@ -58,11 +58,6 @@
ALWAYS_INLINE bool compareExchangeWeak(T expected, T desired, std::memory_order order = std::memory_order_seq_cst)
{
-#if OS(WINDOWS)
- // Windows makes strange assertions about the argument to compare_exchange_weak, and anyway,
- // Windows is X86 so seq_cst is cheap.
- order = std::memory_order_seq_cst;
-#endif
T expectedOrActual = expected;
return value.compare_exchange_weak(expectedOrActual, desired, order);
}
@@ -69,12 +64,6 @@
ALWAYS_INLINE bool compareExchangeWeak(T expected, T desired, std::memory_order order_success, std::memory_order order_failure)
{
-#if OS(WINDOWS)
- // Windows makes strange assertions about the argument to compare_exchange_weak, and anyway,
- // Windows is X86 so seq_cst is cheap.
- order_success = std::memory_order_seq_cst;
- order_failure = std::memory_order_seq_cst;
-#endif
T expectedOrActual = expected;
return value.compare_exchange_weak(expectedOrActual, desired, order_success, order_failure);
}
@@ -81,10 +70,6 @@
ALWAYS_INLINE bool compareExchangeStrong(T expected, T desired, std::memory_order order = std::memory_order_seq_cst)
{
-#if OS(WINDOWS)
- // See above.
- order = std::memory_order_seq_cst;
-#endif
T expectedOrActual = expected;
return value.compare_exchange_strong(expectedOrActual, desired, order);
}
@@ -91,33 +76,14 @@
ALWAYS_INLINE bool compareExchangeStrong(T expected, T desired, std::memory_order order_success, std::memory_order order_failure)
{
-#if OS(WINDOWS)
- // See above.
- order_success = std::memory_order_seq_cst;
- order_failure = std::memory_order_seq_cst;
-#endif
T expectedOrActual = expected;
return value.compare_exchange_strong(expectedOrActual, desired, order_success, order_failure);
}
template<typename U>
- ALWAYS_INLINE T exchangeAndAdd(U addend, std::memory_order order = std::memory_order_seq_cst)
- {
-#if OS(WINDOWS)
- // See above.
- order = std::memory_order_seq_cst;
-#endif
- return value.fetch_add(addend, order);
- }
+ ALWAYS_INLINE T exchangeAndAdd(U addend, std::memory_order order = std::memory_order_seq_cst) { return value.fetch_add(addend, order); }
- ALWAYS_INLINE T exchange(T newValue, std::memory_order order = std::memory_order_seq_cst)
- {
-#if OS(WINDOWS)
- // See above.
- order = std::memory_order_seq_cst;
-#endif
- return value.exchange(newValue, order);
- }
+ ALWAYS_INLINE T exchange(T newValue, std::memory_order order = std::memory_order_seq_cst) { return value.exchange(newValue, order); }
std::atomic<T> value;
};