Mercurial > hg > truffle
diff src/share/vm/opto/memnode.hpp @ 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 | fbde8ec322d0 |
children | 62001a362ce9 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.hpp Thu Sep 10 18:18:06 2009 -0700 +++ b/src/share/vm/opto/memnode.hpp Mon Sep 14 09:49:54 2009 -0700 @@ -582,12 +582,16 @@ // The last StoreCM before a SafePoint must be preserved and occur after its "oop" store // Preceeding equivalent StoreCMs may be eliminated. class StoreCMNode : public StoreNode { + private: + int _oop_alias_idx; // The alias_idx of OopStore public: - StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store ) : StoreNode(c,mem,adr,at,val,oop_store) {} + StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store, int oop_alias_idx ) : StoreNode(c,mem,adr,at,val,oop_store), _oop_alias_idx(oop_alias_idx) {} virtual int Opcode() const; virtual Node *Identity( PhaseTransform *phase ); + virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual const Type *Value( PhaseTransform *phase ) const; virtual BasicType memory_type() const { return T_VOID; } // unspecific + int oop_alias_idx() const { return _oop_alias_idx; } }; //------------------------------LoadPLockedNode---------------------------------