comparison src/share/vm/opto/memnode.cpp @ 985:685e959d09ea

6877254: Server vm crashes with no branches off of store slice" when run with CMS and UseSuperWord(default) Summary: design StoreCMNode::Ideal to promote its oopStore input if the input is a MergeMem node Reviewed-by: kvn, never
author cfang
date Mon, 14 Sep 2009 09:49:54 -0700
parents f2049ae95c3d
children 62001a362ce9
comparison
equal deleted inserted replaced
958:c7e94e8fff43 985:685e959d09ea
2311 } 2311 }
2312 } 2312 }
2313 return this; 2313 return this;
2314 } 2314 }
2315 2315
2316 //=============================================================================
2317 //------------------------------Ideal---------------------------------------
2318 Node *StoreCMNode::Ideal(PhaseGVN *phase, bool can_reshape){
2319 Node* progress = StoreNode::Ideal(phase, can_reshape);
2320 if (progress != NULL) return progress;
2321
2322 Node* my_store = in(MemNode::OopStore);
2323 if (my_store->is_MergeMem()) {
2324 Node* mem = my_store->as_MergeMem()->memory_at(oop_alias_idx());
2325 set_req(MemNode::OopStore, mem);
2326 return this;
2327 }
2328
2329 return NULL;
2330 }
2331
2316 //------------------------------Value----------------------------------------- 2332 //------------------------------Value-----------------------------------------
2317 const Type *StoreCMNode::Value( PhaseTransform *phase ) const { 2333 const Type *StoreCMNode::Value( PhaseTransform *phase ) const {
2318 // Either input is TOP ==> the result is TOP 2334 // Either input is TOP ==> the result is TOP
2319 const Type *t = phase->type( in(MemNode::Memory) ); 2335 const Type *t = phase->type( in(MemNode::Memory) );
2320 if( t == Type::TOP ) return Type::TOP; 2336 if( t == Type::TOP ) return Type::TOP;