hotspot/src/share/vm/opto/connode.hpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 371 1aacedc9db7c
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    76   }
    76   }
    77 
    77 
    78 };
    78 };
    79 
    79 
    80 
    80 
       
    81 //------------------------------ConNNode--------------------------------------
       
    82 // Simple narrow oop constants
       
    83 class ConNNode : public ConNode {
       
    84 public:
       
    85   ConNNode( const TypeNarrowOop *t ) : ConNode(t) {}
       
    86   virtual int Opcode() const;
       
    87 
       
    88   static ConNNode* make( Compile *C, ciObject* con ) {
       
    89     return new (C, 1) ConNNode( TypeNarrowOop::make_from_constant(con) );
       
    90   }
       
    91 
       
    92 };
       
    93 
       
    94 
    81 //------------------------------ConLNode---------------------------------------
    95 //------------------------------ConLNode---------------------------------------
    82 // Simple long constants
    96 // Simple long constants
    83 class ConLNode : public ConNode {
    97 class ConLNode : public ConNode {
    84 public:
    98 public:
    85   ConLNode( const TypeLong *t ) : ConNode(t) {}
    99   ConLNode( const TypeLong *t ) : ConNode(t) {}
   252   // No longer remove CheckCast after CCP as it gives me a place to hang
   266   // No longer remove CheckCast after CCP as it gives me a place to hang
   253   // the proper address type - which is required to compute anti-deps.
   267   // the proper address type - which is required to compute anti-deps.
   254   //virtual Node *Ideal_DU_postCCP( PhaseCCP * );
   268   //virtual Node *Ideal_DU_postCCP( PhaseCCP * );
   255 };
   269 };
   256 
   270 
       
   271 
       
   272 //------------------------------EncodeP--------------------------------
       
   273 // Encodes an oop pointers into its compressed form
       
   274 // Takes an extra argument which is the real heap base as a long which
       
   275 // may be useful for code generation in the backend.
       
   276 class EncodePNode : public TypeNode {
       
   277  public:
       
   278   EncodePNode(Node* value, const Type* type):
       
   279     TypeNode(type, 2) {
       
   280     init_req(0, NULL);
       
   281     init_req(1, value);
       
   282   }
       
   283   virtual int Opcode() const;
       
   284   virtual Node *Identity( PhaseTransform *phase );
       
   285   virtual uint  ideal_reg() const { return Op_RegN; }
       
   286 
       
   287   static Node* encode(PhaseGVN* phase, Node* value);
       
   288 };
       
   289 
       
   290 //------------------------------DecodeN--------------------------------
       
   291 // Converts a narrow oop into a real oop ptr.
       
   292 // Takes an extra argument which is the real heap base as a long which
       
   293 // may be useful for code generation in the backend.
       
   294 class DecodeNNode : public TypeNode {
       
   295  public:
       
   296   DecodeNNode(Node* value, const Type* type):
       
   297     TypeNode(type, 2) {
       
   298     init_req(0, NULL);
       
   299     init_req(1, value);
       
   300   }
       
   301   virtual int Opcode() const;
       
   302   virtual Node *Identity( PhaseTransform *phase );
       
   303   virtual uint  ideal_reg() const { return Op_RegP; }
       
   304 };
       
   305 
   257 //------------------------------Conv2BNode-------------------------------------
   306 //------------------------------Conv2BNode-------------------------------------
   258 // Convert int/pointer to a Boolean.  Map zero to zero, all else to 1.
   307 // Convert int/pointer to a Boolean.  Map zero to zero, all else to 1.
   259 class Conv2BNode : public Node {
   308 class Conv2BNode : public Node {
   260 public:
   309 public:
   261   Conv2BNode( Node *i ) : Node(0,i) {}
   310   Conv2BNode( Node *i ) : Node(0,i) {}