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

src/share/vm/opto/connode.hpp

Print this page




 263 };
 264 
 265 
 266 //------------------------------EncodeP--------------------------------
 267 // Encodes an oop pointers into its compressed form
 268 // Takes an extra argument which is the real heap base as a long which
 269 // may be useful for code generation in the backend.
 270 class EncodePNode : public TypeNode {
 271  public:
 272   EncodePNode(Node* value, const Type* type):
 273     TypeNode(type, 2) {
 274     init_class_id(Class_EncodeP);
 275     init_req(0, NULL);
 276     init_req(1, value);
 277   }
 278   virtual int Opcode() const;
 279   virtual Node *Identity( PhaseTransform *phase );
 280   virtual const Type *Value( PhaseTransform *phase ) const;
 281   virtual uint  ideal_reg() const { return Op_RegN; }
 282 
 283   static Node* encode(PhaseTransform* phase, Node* value);
 284   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
 285 };
 286 
 287 //------------------------------DecodeN--------------------------------
 288 // Converts a narrow oop into a real oop ptr.
 289 // Takes an extra argument which is the real heap base as a long which
 290 // may be useful for code generation in the backend.
 291 class DecodeNNode : public TypeNode {
 292  public:
 293   DecodeNNode(Node* value, const Type* type):
 294     TypeNode(type, 2) {
 295     init_class_id(Class_DecodeN);
 296     init_req(0, NULL);
 297     init_req(1, value);
 298   }
 299   virtual int Opcode() const;
 300   virtual Node *Identity( PhaseTransform *phase );
 301   virtual const Type *Value( PhaseTransform *phase ) const;
 302   virtual uint  ideal_reg() const { return Op_RegP; }
 303 
 304   static Node* decode(PhaseTransform* phase, Node* value);
 305 };
 306 
 307 //------------------------------Conv2BNode-------------------------------------
 308 // Convert int/pointer to a Boolean.  Map zero to zero, all else to 1.
 309 class Conv2BNode : public Node {
 310 public:
 311   Conv2BNode( Node *i ) : Node(0,i) {}
 312   virtual int Opcode() const;
 313   virtual const Type *bottom_type() const { return TypeInt::BOOL; }
 314   virtual Node *Identity( PhaseTransform *phase );
 315   virtual const Type *Value( PhaseTransform *phase ) const;
 316   virtual uint  ideal_reg() const { return Op_RegI; }
 317 };
 318 
 319 // The conversions operations are all Alpha sorted.  Please keep it that way!
 320 //------------------------------ConvD2FNode------------------------------------
 321 // Convert double to float
 322 class ConvD2FNode : public Node {
 323 public:
 324   ConvD2FNode( Node *in1 ) : Node(0,in1) {}




 263 };
 264 
 265 
 266 //------------------------------EncodeP--------------------------------
 267 // Encodes an oop pointers into its compressed form
 268 // Takes an extra argument which is the real heap base as a long which
 269 // may be useful for code generation in the backend.
 270 class EncodePNode : public TypeNode {
 271  public:
 272   EncodePNode(Node* value, const Type* type):
 273     TypeNode(type, 2) {
 274     init_class_id(Class_EncodeP);
 275     init_req(0, NULL);
 276     init_req(1, value);
 277   }
 278   virtual int Opcode() const;
 279   virtual Node *Identity( PhaseTransform *phase );
 280   virtual const Type *Value( PhaseTransform *phase ) const;
 281   virtual uint  ideal_reg() const { return Op_RegN; }
 282 

 283   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
 284 };
 285 
 286 //------------------------------DecodeN--------------------------------
 287 // Converts a narrow oop into a real oop ptr.
 288 // Takes an extra argument which is the real heap base as a long which
 289 // may be useful for code generation in the backend.
 290 class DecodeNNode : public TypeNode {
 291  public:
 292   DecodeNNode(Node* value, const Type* type):
 293     TypeNode(type, 2) {
 294     init_class_id(Class_DecodeN);
 295     init_req(0, NULL);
 296     init_req(1, value);
 297   }
 298   virtual int Opcode() const;
 299   virtual Node *Identity( PhaseTransform *phase );
 300   virtual const Type *Value( PhaseTransform *phase ) const;
 301   virtual uint  ideal_reg() const { return Op_RegP; }


 302 };
 303 
 304 //------------------------------Conv2BNode-------------------------------------
 305 // Convert int/pointer to a Boolean.  Map zero to zero, all else to 1.
 306 class Conv2BNode : public Node {
 307 public:
 308   Conv2BNode( Node *i ) : Node(0,i) {}
 309   virtual int Opcode() const;
 310   virtual const Type *bottom_type() const { return TypeInt::BOOL; }
 311   virtual Node *Identity( PhaseTransform *phase );
 312   virtual const Type *Value( PhaseTransform *phase ) const;
 313   virtual uint  ideal_reg() const { return Op_RegI; }
 314 };
 315 
 316 // The conversions operations are all Alpha sorted.  Please keep it that way!
 317 //------------------------------ConvD2FNode------------------------------------
 318 // Convert double to float
 319 class ConvD2FNode : public Node {
 320 public:
 321   ConvD2FNode( Node *in1 ) : Node(0,in1) {}


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