< prev index next >
src/hotspot/os_cpu/windows_x86/orderAccess_windows_x86.hpp
Print this page
@@ -37,21 +37,10 @@
// A compiler barrier, forcing the C++ compiler to invalidate all memory assumptions
inline void compiler_barrier() {
_ReadWriteBarrier();
}
-// Note that in MSVC, volatile memory accesses are explicitly
-// guaranteed to have acquire release semantics (w.r.t. compiler
-// reordering) and therefore does not even need a compiler barrier
-// for normal acquire release accesses. And all generalized
-// bound calls like release_store go through OrderAccess::load
-// and OrderAccess::store which do volatile memory accesses.
-template<> inline void ScopedFence<X_ACQUIRE>::postfix() { }
-template<> inline void ScopedFence<RELEASE_X>::prefix() { }
-template<> inline void ScopedFence<RELEASE_X_FENCE>::prefix() { }
-template<> inline void ScopedFence<RELEASE_X_FENCE>::postfix() { OrderAccess::fence(); }
-
inline void OrderAccess::loadload() { compiler_barrier(); }
inline void OrderAccess::storestore() { compiler_barrier(); }
inline void OrderAccess::loadstore() { compiler_barrier(); }
inline void OrderAccess::storeload() { fence(); }
@@ -72,47 +61,6 @@
inline void OrderAccess::cross_modify_fence() {
int regs[4];
__cpuid(regs, 0);
}
-#ifndef AMD64
-template<>
-struct OrderAccess::PlatformOrderedStore<1, RELEASE_X_FENCE>
-{
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm {
- mov edx, p;
- mov al, v;
- xchg al, byte ptr [edx];
- }
- }
-};
-
-template<>
-struct OrderAccess::PlatformOrderedStore<2, RELEASE_X_FENCE>
-{
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm {
- mov edx, p;
- mov ax, v;
- xchg ax, word ptr [edx];
- }
- }
-};
-
-template<>
-struct OrderAccess::PlatformOrderedStore<4, RELEASE_X_FENCE>
-{
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm {
- mov edx, p;
- mov eax, v;
- xchg eax, dword ptr [edx];
- }
- }
-};
-#endif // AMD64
-
#endif // OS_CPU_WINDOWS_X86_ORDERACCESS_WINDOWS_X86_HPP
< prev index next >