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

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Dec 27 19:49:23 PST 2010


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