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

Yumin Qi yumin.qi at oracle.com
Tue Jul 9 12:42:34 PDT 2013


Revised version based on John's suggestion:

http://cr.openjdk.java.net/~minqi/8016538/02

Thanks
Yumin



On 7/9/2013 11:56 AM, John Rose wrote:
> 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