comparison src/share/vm/opto/memnode.hpp @ 628:7bb995fbd3c0

Merge
author trims
date Thu, 12 Mar 2009 18:16:36 -0700
parents 0fbdb4381b99 337400e7a5dd
children fbde8ec322d0
comparison
equal deleted inserted replaced
580:ce2272390558 628:7bb995fbd3c0
205 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 205 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
206 virtual int store_Opcode() const { return Op_StoreB; } 206 virtual int store_Opcode() const { return Op_StoreB; }
207 virtual BasicType memory_type() const { return T_BYTE; } 207 virtual BasicType memory_type() const { return T_BYTE; }
208 }; 208 };
209 209
210 //------------------------------LoadUBNode-------------------------------------
211 // Load a unsigned byte (8bits unsigned) from memory
212 class LoadUBNode : public LoadNode {
213 public:
214 LoadUBNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt* ti = TypeInt::UBYTE )
215 : LoadNode(c, mem, adr, at, ti) {}
216 virtual int Opcode() const;
217 virtual uint ideal_reg() const { return Op_RegI; }
218 virtual Node* Ideal(PhaseGVN *phase, bool can_reshape);
219 virtual int store_Opcode() const { return Op_StoreB; }
220 virtual BasicType memory_type() const { return T_BYTE; }
221 };
222
210 //------------------------------LoadUSNode------------------------------------- 223 //------------------------------LoadUSNode-------------------------------------
211 // Load an unsigned short/char (16bits unsigned) from memory 224 // Load an unsigned short/char (16bits unsigned) from memory
212 class LoadUSNode : public LoadNode { 225 class LoadUSNode : public LoadNode {
213 public: 226 public:
214 LoadUSNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR ) 227 LoadUSNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR )
228 : LoadNode(c,mem,adr,at,ti) {} 241 : LoadNode(c,mem,adr,at,ti) {}
229 virtual int Opcode() const; 242 virtual int Opcode() const;
230 virtual uint ideal_reg() const { return Op_RegI; } 243 virtual uint ideal_reg() const { return Op_RegI; }
231 virtual int store_Opcode() const { return Op_StoreI; } 244 virtual int store_Opcode() const { return Op_StoreI; }
232 virtual BasicType memory_type() const { return T_INT; } 245 virtual BasicType memory_type() const { return T_INT; }
246 };
247
248 //------------------------------LoadUI2LNode-----------------------------------
249 // Load an unsigned integer into long from memory
250 class LoadUI2LNode : public LoadNode {
251 public:
252 LoadUI2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeLong* t = TypeLong::UINT)
253 : LoadNode(c, mem, adr, at, t) {}
254 virtual int Opcode() const;
255 virtual uint ideal_reg() const { return Op_RegL; }
256 virtual int store_Opcode() const { return Op_StoreL; }
257 virtual BasicType memory_type() const { return T_LONG; }
233 }; 258 };
234 259
235 //------------------------------LoadRangeNode---------------------------------- 260 //------------------------------LoadRangeNode----------------------------------
236 // Load an array length from the array 261 // Load an array length from the array
237 class LoadRangeNode : public LoadINode { 262 class LoadRangeNode : public LoadINode {
755 //------------------------------MemBar----------------------------------------- 780 //------------------------------MemBar-----------------------------------------
756 // There are different flavors of Memory Barriers to match the Java Memory 781 // There are different flavors of Memory Barriers to match the Java Memory
757 // Model. Monitor-enter and volatile-load act as Aquires: no following ref 782 // Model. Monitor-enter and volatile-load act as Aquires: no following ref
758 // can be moved to before them. We insert a MemBar-Acquire after a FastLock or 783 // can be moved to before them. We insert a MemBar-Acquire after a FastLock or
759 // volatile-load. Monitor-exit and volatile-store act as Release: no 784 // volatile-load. Monitor-exit and volatile-store act as Release: no
760 // preceeding ref can be moved to after them. We insert a MemBar-Release 785 // preceding ref can be moved to after them. We insert a MemBar-Release
761 // before a FastUnlock or volatile-store. All volatiles need to be 786 // before a FastUnlock or volatile-store. All volatiles need to be
762 // serialized, so we follow all volatile-stores with a MemBar-Volatile to 787 // serialized, so we follow all volatile-stores with a MemBar-Volatile to
763 // seperate it from any following volatile-load. 788 // separate it from any following volatile-load.
764 class MemBarNode: public MultiNode { 789 class MemBarNode: public MultiNode {
765 virtual uint hash() const ; // { return NO_HASH; } 790 virtual uint hash() const ; // { return NO_HASH; }
766 virtual uint cmp( const Node &n ) const ; // Always fail, except on self 791 virtual uint cmp( const Node &n ) const ; // Always fail, except on self
767 792
768 virtual uint size_of() const { return sizeof(*this); } 793 virtual uint size_of() const { return sizeof(*this); }