Mercurial > hg > truffle
changeset 1198:8d9bfe6a446b
6920346: G1: "must avoid base_memory and AliasIdxTop"
Reviewed-by: kvn
author | never |
---|---|
date | Thu, 28 Jan 2010 16:28:28 -0800 |
parents | 9e1637a04678 |
children | 0e14bd797dad |
files | src/share/vm/opto/memnode.hpp |
diffstat | 1 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.hpp Thu Jan 28 08:36:34 2010 -0800 +++ b/src/share/vm/opto/memnode.hpp Thu Jan 28 16:28:28 2010 -0800 @@ -583,9 +583,22 @@ // Preceeding equivalent StoreCMs may be eliminated. class StoreCMNode : public StoreNode { private: + virtual uint hash() const { return StoreNode::hash() + _oop_alias_idx; } + virtual uint cmp( const Node &n ) const { + return _oop_alias_idx == ((StoreCMNode&)n)._oop_alias_idx + && StoreNode::cmp(n); + } + virtual uint size_of() const { return sizeof(*this); } 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, int oop_alias_idx ) : StoreNode(c,mem,adr,at,val,oop_store), _oop_alias_idx(oop_alias_idx) {} + 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) { + assert(_oop_alias_idx >= Compile::AliasIdxRaw || + _oop_alias_idx == Compile::AliasIdxBot && Compile::current()->AliasLevel() == 0, + "bad oop alias idx"); + } virtual int Opcode() const; virtual Node *Identity( PhaseTransform *phase ); virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);