Request for review(M): 7009231: C1: Incorrect CAS code for longs on SPARC 32bit
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Dec 27 21:10:44 PST 2010
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