src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp

changeset 6696
273a462437e9
parent 5353
b800986664f4
child 6876
710a3c8b516e
child 7058
2fd0fd493045
     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);

mercurial