Request for review(M): 7009231: C1: Incorrect CAS code for longs on SPARC 32bit
Igor Veresov
igor.veresov at oracle.com
Mon Dec 27 21:21:02 PST 2010
Done. Thanks, Vladimir!
igor
On 12/27/10 9:10 PM, Vladimir Kozlov wrote:
> Sorry, I was not clear. Do NOT use flags '-client -d32' for the test
> otherwise a default Client VM will be used instead of tested Server or
> 64 bit VM.
> The rest is good so you can push after you remove these flags.
>
> Thanks,
> Vladimir
>
> On 12/27/10 8:08 PM, Igor Veresov wrote:
>> 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