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

Yumin Qi yumin.qi at oracle.com
Tue Jul 9 15:11:24 PDT 2013


Vladimir,

On 7/9/2013 2:16 PM, Vladimir Kozlov wrote:
> 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
I will check for that. Or we can guard by AMD64.
> Why you did not use release_store_fence() in 
> OrderAccess::release_store_fence() and where is cast to jlong* ?
>
You  are right,  it is better with release_store_fence() on 64bit.
There is no functions for casting pointer I think.

Thanks
Yumin
> 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