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: