< prev index next >

src/hotspot/os_cpu/windows_x86/orderAccess_windows_x86.hpp

Print this page

        

*** 37,57 **** // 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(); } --- 37,46 ----
*** 72,118 **** 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 --- 61,66 ----
< prev index next >