src/share/vm/opto/memnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6877254 Sdiff src/share/vm/opto

src/share/vm/opto/memnode.hpp

Print this page




 565 public:
 566   StorePNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {}
 567   virtual int Opcode() const;
 568   virtual BasicType memory_type() const { return T_ADDRESS; }
 569 };
 570 
 571 //------------------------------StoreNNode-------------------------------------
 572 // Store narrow oop to memory
 573 class StoreNNode : public StoreNode {
 574 public:
 575   StoreNNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {}
 576   virtual int Opcode() const;
 577   virtual BasicType memory_type() const { return T_NARROWOOP; }
 578 };
 579 
 580 //------------------------------StoreCMNode-----------------------------------
 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
 583 // Preceeding equivalent StoreCMs may be eliminated.
 584 class StoreCMNode : public StoreNode {


 585 public:
 586   StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store ) : StoreNode(c,mem,adr,at,val,oop_store) {}
 587   virtual int Opcode() const;
 588   virtual Node *Identity( PhaseTransform *phase );

 589   virtual const Type *Value( PhaseTransform *phase ) const;
 590   virtual BasicType memory_type() const { return T_VOID; } // unspecific

 591 };
 592 
 593 //------------------------------LoadPLockedNode---------------------------------
 594 // Load-locked a pointer from memory (either object or array).
 595 // On Sparc & Intel this is implemented as a normal pointer load.
 596 // On PowerPC and friends it's a real load-locked.
 597 class LoadPLockedNode : public LoadPNode {
 598 public:
 599   LoadPLockedNode( Node *c, Node *mem, Node *adr )
 600     : LoadPNode(c,mem,adr,TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM) {}
 601   virtual int Opcode() const;
 602   virtual int store_Opcode() const { return Op_StorePConditional; }
 603   virtual bool depends_only_on_test() const { return true; }
 604 };
 605 
 606 //------------------------------LoadLLockedNode---------------------------------
 607 // Load-locked a pointer from memory (either object or array).
 608 // On Sparc & Intel this is implemented as a normal long load.
 609 class LoadLLockedNode : public LoadLNode {
 610 public:




 565 public:
 566   StorePNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {}
 567   virtual int Opcode() const;
 568   virtual BasicType memory_type() const { return T_ADDRESS; }
 569 };
 570 
 571 //------------------------------StoreNNode-------------------------------------
 572 // Store narrow oop to memory
 573 class StoreNNode : public StoreNode {
 574 public:
 575   StoreNNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {}
 576   virtual int Opcode() const;
 577   virtual BasicType memory_type() const { return T_NARROWOOP; }
 578 };
 579 
 580 //------------------------------StoreCMNode-----------------------------------
 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
 583 // Preceeding equivalent StoreCMs may be eliminated.
 584 class StoreCMNode : public StoreNode {
 585  private:
 586   int _oop_alias_idx;   // The alias_idx of OopStore
 587 public:
 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) {}
 589   virtual int Opcode() const;
 590   virtual Node *Identity( PhaseTransform *phase );
 591   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 592   virtual const Type *Value( PhaseTransform *phase ) const;
 593   virtual BasicType memory_type() const { return T_VOID; } // unspecific
 594   int oop_alias_idx() const { return _oop_alias_idx; }
 595 };
 596 
 597 //------------------------------LoadPLockedNode---------------------------------
 598 // Load-locked a pointer from memory (either object or array).
 599 // On Sparc & Intel this is implemented as a normal pointer load.
 600 // On PowerPC and friends it's a real load-locked.
 601 class LoadPLockedNode : public LoadPNode {
 602 public:
 603   LoadPLockedNode( Node *c, Node *mem, Node *adr )
 604     : LoadPNode(c,mem,adr,TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM) {}
 605   virtual int Opcode() const;
 606   virtual int store_Opcode() const { return Op_StorePConditional; }
 607   virtual bool depends_only_on_test() const { return true; }
 608 };
 609 
 610 //------------------------------LoadLLockedNode---------------------------------
 611 // Load-locked a pointer from memory (either object or array).
 612 // On Sparc & Intel this is implemented as a normal long load.
 613 class LoadLLockedNode : public LoadLNode {
 614 public:


src/share/vm/opto/memnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File