Mercurial > hg > graal-compiler
diff 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 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp Thu Sep 10 18:18:06 2009 -0700 +++ b/src/share/vm/opto/memnode.cpp Mon Sep 14 09:49:54 2009 -0700 @@ -2313,6 +2313,22 @@ return this; } +//============================================================================= +//------------------------------Ideal--------------------------------------- +Node *StoreCMNode::Ideal(PhaseGVN *phase, bool can_reshape){ + Node* progress = StoreNode::Ideal(phase, can_reshape); + if (progress != NULL) return progress; + + Node* my_store = in(MemNode::OopStore); + if (my_store->is_MergeMem()) { + Node* mem = my_store->as_MergeMem()->memory_at(oop_alias_idx()); + set_req(MemNode::OopStore, mem); + return this; + } + + return NULL; +} + //------------------------------Value----------------------------------------- const Type *StoreCMNode::Value( PhaseTransform *phase ) const { // Either input is TOP ==> the result is TOP