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

John Rose john.r.rose at oracle.com
Tue Jul 9 12:56:33 PDT 2013


Good!  — John

On Jul 9, 2013, at 12:42 PM, Yumin Qi <yumin.qi at oracle.com> wrote:

> 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