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