Request for review(M): 7009231: C1: Incorrect CAS code for longs on SPARC 32bit

Igor Veresov igor.veresov at oracle.com
Mon Dec 27 20:08:51 PST 2010


Done. Webrev updated.

igor

On 12/27/10 7:49 PM, Vladimir Kozlov wrote:
> Igor,
>
> Add a comment about brx() that it checks only icc in 32 bit and xcc in
> 64 bit.
>
> Test flags could be only -Xbatch (to guaranty compilation) to test also
> 64 bit and server VM:
>
> * @run main/othervm -Xbatch Test7009231
>
> Thanks,
> Vladimir
>
> Igor Veresov wrote:
>> Problem: On sparc in 32bit we use the casx instruction and then cmp to
>> compare new and old value. That cmp does a 64bit compare. It is
>> followed by a cmove the generates a br instruction, which uses only
>> icc. Also, this behavior of cmove is incorrect in 64bit, because we
>> always miss upper 32bits.
>>
>> Solution: Add "xcc to icc conversion" when generating cas for longs in
>> 32bit. Also, propagate the type of comparison to cmove to generate
>> proper code in 64bit.
>>
>> Webrev: http://cr.openjdk.java.net/~iveresov/7009231/webrev.00
>>
>>
>> Testing: Test that failed, JPRT with tiered in progress.



More information about the hotspot-compiler-dev mailing list