src/share/vm/opto/library_call.cpp

changeset 670
9c2ecc2ffb12
parent 631
d1605aabd0a1
parent 656
1e026f8da827
child 855
a1980da045cc
     1.1 --- a/src/share/vm/opto/library_call.cpp	Thu Jul 03 11:01:32 2008 -0700
     1.2 +++ b/src/share/vm/opto/library_call.cpp	Fri Jul 11 01:14:44 2008 -0700
     1.3 @@ -2194,14 +2194,15 @@
     1.4      pre_barrier(control(), base, adr, alias_idx, newval, value_type, T_OBJECT);
     1.5  #ifdef _LP64
     1.6      if (adr->bottom_type()->is_ptr_to_narrowoop()) {
     1.7 +      Node *newval_enc = _gvn.transform(new (C, 2) EncodePNode(newval, newval->bottom_type()->make_narrowoop()));
     1.8 +      Node *oldval_enc = _gvn.transform(new (C, 2) EncodePNode(oldval, oldval->bottom_type()->make_narrowoop()));
     1.9        cas = _gvn.transform(new (C, 5) CompareAndSwapNNode(control(), mem, adr,
    1.10 -                                                           EncodePNode::encode(&_gvn, newval),
    1.11 -                                                           EncodePNode::encode(&_gvn, oldval)));
    1.12 +                                                          newval_enc, oldval_enc));
    1.13      } else
    1.14  #endif
    1.15 -      {
    1.16 -        cas = _gvn.transform(new (C, 5) CompareAndSwapPNode(control(), mem, adr, newval, oldval));
    1.17 -      }
    1.18 +    {
    1.19 +      cas = _gvn.transform(new (C, 5) CompareAndSwapPNode(control(), mem, adr, newval, oldval));
    1.20 +    }
    1.21      post_barrier(control(), cas, base, adr, alias_idx, newval, T_OBJECT, true);
    1.22      break;
    1.23    default:

mercurial