Request for review(M): 7009231: C1: Incorrect CAS code for longs on SPARC 32bit
Igor Veresov
igor.veresov at oracle.com
Mon Dec 27 19:29:50 PST 2010
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