Mercurial > hg > graal-compiler
comparison src/share/vm/opto/memnode.hpp @ 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 | f96a1a986f7b |
children | 9e321dcfa5b7 |
comparison
equal
deleted
inserted
replaced
1197:9e1637a04678 | 1198:8d9bfe6a446b |
---|---|
581 // Store card-mark byte to memory for CM | 581 // Store card-mark byte to memory for CM |
582 // The last StoreCM before a SafePoint must be preserved and occur after its "oop" store | 582 // The last StoreCM before a SafePoint must be preserved and occur after its "oop" store |
583 // Preceeding equivalent StoreCMs may be eliminated. | 583 // Preceeding equivalent StoreCMs may be eliminated. |
584 class StoreCMNode : public StoreNode { | 584 class StoreCMNode : public StoreNode { |
585 private: | 585 private: |
586 virtual uint hash() const { return StoreNode::hash() + _oop_alias_idx; } | |
587 virtual uint cmp( const Node &n ) const { | |
588 return _oop_alias_idx == ((StoreCMNode&)n)._oop_alias_idx | |
589 && StoreNode::cmp(n); | |
590 } | |
591 virtual uint size_of() const { return sizeof(*this); } | |
586 int _oop_alias_idx; // The alias_idx of OopStore | 592 int _oop_alias_idx; // The alias_idx of OopStore |
587 public: | 593 |
588 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) {} | 594 public: |
595 StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store, int oop_alias_idx ) : | |
596 StoreNode(c,mem,adr,at,val,oop_store), | |
597 _oop_alias_idx(oop_alias_idx) { | |
598 assert(_oop_alias_idx >= Compile::AliasIdxRaw || | |
599 _oop_alias_idx == Compile::AliasIdxBot && Compile::current()->AliasLevel() == 0, | |
600 "bad oop alias idx"); | |
601 } | |
589 virtual int Opcode() const; | 602 virtual int Opcode() const; |
590 virtual Node *Identity( PhaseTransform *phase ); | 603 virtual Node *Identity( PhaseTransform *phase ); |
591 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); | 604 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); |
592 virtual const Type *Value( PhaseTransform *phase ) const; | 605 virtual const Type *Value( PhaseTransform *phase ) const; |
593 virtual BasicType memory_type() const { return T_VOID; } // unspecific | 606 virtual BasicType memory_type() const { return T_VOID; } // unspecific |