comparison src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp @ 12062:b1fd869e7df0

8023188: Unsafe volatile double store on bsd is broken Reviewed-by: dcubed, dholmes Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 19 Aug 2013 09:16:35 -0700
parents 4614a598dae1
children
comparison
equal deleted inserted replaced
12061:e5003079dfa5 12062:b1fd869e7df0
188 inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v) { release_store_fence((volatile jshort*)p, (jshort)v); } 188 inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v) { release_store_fence((volatile jshort*)p, (jshort)v); }
189 inline void OrderAccess::release_store_fence(volatile juint* p, juint v) { release_store_fence((volatile jint*)p, (jint)v); } 189 inline void OrderAccess::release_store_fence(volatile juint* p, juint v) { release_store_fence((volatile jint*)p, (jint)v); }
190 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { release_store_fence((volatile jlong*)p, (jlong)v); } 190 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { release_store_fence((volatile jlong*)p, (jlong)v); }
191 191
192 inline void OrderAccess::release_store_fence(volatile jfloat* p, jfloat v) { *p = v; fence(); } 192 inline void OrderAccess::release_store_fence(volatile jfloat* p, jfloat v) { *p = v; fence(); }
193 inline void OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { release_store_fence((volatile jlong*)p, jdouble_cast(v)); } 193 inline void OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { release_store_fence((volatile jlong*)p, jlong_cast(v)); }
194 194
195 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { 195 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) {
196 #ifdef AMD64 196 #ifdef AMD64
197 __asm__ __volatile__ ( "xchgq (%2), %0" 197 __asm__ __volatile__ ( "xchgq (%2), %0"
198 : "=r" (v) 198 : "=r" (v)