1.1 --- a/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp Wed May 28 06:26:05 2014 -0700 1.2 +++ b/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp Wed May 28 07:59:23 2014 -1000 1.3 @@ -1221,10 +1221,8 @@ 1.4 bool is_obj = (type == T_ARRAY || type == T_OBJECT); 1.5 LIR_Opr offset = off.result(); 1.6 1.7 - if (data != dst) { 1.8 - __ move(data, dst); 1.9 - data = dst; 1.10 - } 1.11 + // Because we want a 2-arg form of xchg 1.12 + __ move(data, dst); 1.13 1.14 assert (!x->is_add() && (type == T_INT || (is_obj LP64_ONLY(&& UseCompressedOops))), "unexpected type"); 1.15 LIR_Address* addr; 1.16 @@ -1254,7 +1252,7 @@ 1.17 pre_barrier(ptr, LIR_OprFact::illegalOpr /* pre_val */, 1.18 true /* do_load */, false /* patch */, NULL); 1.19 } 1.20 - __ xchg(LIR_OprFact::address(addr), data, dst, tmp); 1.21 + __ xchg(LIR_OprFact::address(addr), dst, dst, tmp); 1.22 if (is_obj) { 1.23 // Seems to be a precise address 1.24 post_barrier(ptr, data);