RFR: 8016538: volatile double access via Unsafe.cpp is not atomic
John Rose
john.r.rose at oracle.com
Tue Jul 9 11:56:20 PDT 2013
Instead of using direct pointer casts on a temp to retype the bits between, use the available utility functions jdouble_cast and jlong_cast. It is thought to be more portable. At least, it is cleaner and easier to ensure correctness.
— John
On Jul 9, 2013, at 11:32 AM, Yumin Qi <yumin.qi at oracle.com> 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