comparison src/share/vm/opto/library_call.cpp @ 235:9c2ecc2ffb12 jdk7-b31

Merge
author trims
date Fri, 11 Jul 2008 01:14:44 -0700
parents d1605aabd0a1 1e026f8da827
children a1980da045cc
comparison
equal deleted inserted replaced
197:de141433919f 235:9c2ecc2ffb12
2192 // reference stores need a store barrier. 2192 // reference stores need a store barrier.
2193 // (They don't if CAS fails, but it isn't worth checking.) 2193 // (They don't if CAS fails, but it isn't worth checking.)
2194 pre_barrier(control(), base, adr, alias_idx, newval, value_type, T_OBJECT); 2194 pre_barrier(control(), base, adr, alias_idx, newval, value_type, T_OBJECT);
2195 #ifdef _LP64 2195 #ifdef _LP64
2196 if (adr->bottom_type()->is_ptr_to_narrowoop()) { 2196 if (adr->bottom_type()->is_ptr_to_narrowoop()) {
2197 Node *newval_enc = _gvn.transform(new (C, 2) EncodePNode(newval, newval->bottom_type()->make_narrowoop()));
2198 Node *oldval_enc = _gvn.transform(new (C, 2) EncodePNode(oldval, oldval->bottom_type()->make_narrowoop()));
2197 cas = _gvn.transform(new (C, 5) CompareAndSwapNNode(control(), mem, adr, 2199 cas = _gvn.transform(new (C, 5) CompareAndSwapNNode(control(), mem, adr,
2198 EncodePNode::encode(&_gvn, newval), 2200 newval_enc, oldval_enc));
2199 EncodePNode::encode(&_gvn, oldval)));
2200 } else 2201 } else
2201 #endif 2202 #endif
2202 { 2203 {
2203 cas = _gvn.transform(new (C, 5) CompareAndSwapPNode(control(), mem, adr, newval, oldval)); 2204 cas = _gvn.transform(new (C, 5) CompareAndSwapPNode(control(), mem, adr, newval, oldval));
2204 } 2205 }
2205 post_barrier(control(), cas, base, adr, alias_idx, newval, T_OBJECT, true); 2206 post_barrier(control(), cas, base, adr, alias_idx, newval, T_OBJECT, true);
2206 break; 2207 break;
2207 default: 2208 default:
2208 ShouldNotReachHere(); 2209 ShouldNotReachHere();
2209 break; 2210 break;