src/share/vm/opto/compile.cpp

Print this page
rev 3419 : 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
Summary: use shorter instruction sequences for atomic add and atomic exchange when possible.
Reviewed-by:


2268       // Convert OopStore dependence into precedence edge
2269       Node* prec = n->in(MemNode::OopStore);
2270       n->del_req(MemNode::OopStore);
2271       n->add_prec(prec);
2272       eliminate_redundant_card_marks(n);
2273     }
2274 
2275     // fall through
2276 
2277   case Op_StoreB:
2278   case Op_StoreC:
2279   case Op_StorePConditional:
2280   case Op_StoreI:
2281   case Op_StoreL:
2282   case Op_StoreIConditional:
2283   case Op_StoreLConditional:
2284   case Op_CompareAndSwapI:
2285   case Op_CompareAndSwapL:
2286   case Op_CompareAndSwapP:
2287   case Op_CompareAndSwapN:






2288   case Op_StoreP:
2289   case Op_StoreN:
2290   case Op_LoadB:
2291   case Op_LoadUB:
2292   case Op_LoadUS:
2293   case Op_LoadI:
2294   case Op_LoadUI2L:
2295   case Op_LoadKlass:
2296   case Op_LoadNKlass:
2297   case Op_LoadL:
2298   case Op_LoadL_unaligned:
2299   case Op_LoadPLocked:
2300   case Op_LoadP:
2301   case Op_LoadN:
2302   case Op_LoadRange:
2303   case Op_LoadS: {
2304   handle_mem:
2305 #ifdef ASSERT
2306     if( VerifyOptoOopOffsets ) {
2307       assert( n->is_Mem(), "" );




2268       // Convert OopStore dependence into precedence edge
2269       Node* prec = n->in(MemNode::OopStore);
2270       n->del_req(MemNode::OopStore);
2271       n->add_prec(prec);
2272       eliminate_redundant_card_marks(n);
2273     }
2274 
2275     // fall through
2276 
2277   case Op_StoreB:
2278   case Op_StoreC:
2279   case Op_StorePConditional:
2280   case Op_StoreI:
2281   case Op_StoreL:
2282   case Op_StoreIConditional:
2283   case Op_StoreLConditional:
2284   case Op_CompareAndSwapI:
2285   case Op_CompareAndSwapL:
2286   case Op_CompareAndSwapP:
2287   case Op_CompareAndSwapN:
2288   case Op_GetAndAddI:
2289   case Op_GetAndAddL:
2290   case Op_GetAndSetI:
2291   case Op_GetAndSetL:
2292   case Op_GetAndSetP:
2293   case Op_GetAndSetN:
2294   case Op_StoreP:
2295   case Op_StoreN:
2296   case Op_LoadB:
2297   case Op_LoadUB:
2298   case Op_LoadUS:
2299   case Op_LoadI:
2300   case Op_LoadUI2L:
2301   case Op_LoadKlass:
2302   case Op_LoadNKlass:
2303   case Op_LoadL:
2304   case Op_LoadL_unaligned:
2305   case Op_LoadPLocked:
2306   case Op_LoadP:
2307   case Op_LoadN:
2308   case Op_LoadRange:
2309   case Op_LoadS: {
2310   handle_mem:
2311 #ifdef ASSERT
2312     if( VerifyOptoOopOffsets ) {
2313       assert( n->is_Mem(), "" );