Mercurial > hg > graal-jvmci-8
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; |