RFR: 8016538: volatile double access via Unsafe.cpp is not atomic

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jul 9 14:16:36 PDT 2013


Hi Yumin,

load_acquire() could be more expensive with this changes even for 64bit 
VM because you first loading from volatile address into local variable. 
Please, check what code is generated in 64-bit with your changes.

Why you did not use release_store_fence() in 
OrderAccess::release_store_fence() and where is cast to jlong* ?

Thanks,
Vladimir

On 7/9/13 11:32 AM, Yumin Qi wrote:
> Hi,
>
>    Can i have your codereview of this change:
>    Unsafe_Get[SET]DoubleVolatile are not atomic on 32bit x86 linux
> caused test for
> org.openjdk.concurrent.torture.tests.atomicity.primitives.reflect.DoubleAtomicityTest
> failed.
>    The fix is using same treatment for jdouble as for jlong. Tests
> passed on failed test case, vm quick tests. It only happens on linux
> 32bit platform, on solaris, the inlined code be compiled into code of
> using fldl/fstpl which are atomic instructions.
>
>    Contributed by: dholmes
>
>    URL: http://cr.openjdk.java.net/~minqi/8016538/01
>
>    Thanks
>    Yumin


More information about the hotspot-runtime-dev mailing list