hotspot/src/share/vm/opto/connode.hpp
changeset 762 1b26adb5fea1
parent 594 9f4474e5dbaf
child 767 64fb1fd7186d
equal deleted inserted replaced
761:312de898447e 762:1b26adb5fea1
   547 // Stops value-numbering, Ideal calls or Identity functions.
   547 // Stops value-numbering, Ideal calls or Identity functions.
   548 class Opaque1Node : public Node {
   548 class Opaque1Node : public Node {
   549   virtual uint hash() const ;                  // { return NO_HASH; }
   549   virtual uint hash() const ;                  // { return NO_HASH; }
   550   virtual uint cmp( const Node &n ) const;
   550   virtual uint cmp( const Node &n ) const;
   551 public:
   551 public:
   552   Opaque1Node( Node *n ) : Node(0,n) {}
   552   Opaque1Node( Compile* C, Node *n ) : Node(0,n) {
       
   553     // Put it on the Macro nodes list to removed during macro nodes expansion.
       
   554     init_flags(Flag_is_macro);
       
   555     C->add_macro_node(this);
       
   556   }
   553   // Special version for the pre-loop to hold the original loop limit
   557   // Special version for the pre-loop to hold the original loop limit
   554   // which is consumed by range check elimination.
   558   // which is consumed by range check elimination.
   555   Opaque1Node( Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {}
   559   Opaque1Node( Compile* C, Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {
       
   560     // Put it on the Macro nodes list to removed during macro nodes expansion.
       
   561     init_flags(Flag_is_macro);
       
   562     C->add_macro_node(this);
       
   563   }
   556   Node* original_loop_limit() { return req()==3 ? in(2) : NULL; }
   564   Node* original_loop_limit() { return req()==3 ? in(2) : NULL; }
   557   virtual int Opcode() const;
   565   virtual int Opcode() const;
   558   virtual const Type *bottom_type() const { return TypeInt::INT; }
   566   virtual const Type *bottom_type() const { return TypeInt::INT; }
   559   virtual Node *Identity( PhaseTransform *phase );
   567   virtual Node *Identity( PhaseTransform *phase );
   560 };
   568 };
   570 // it's OK to be slightly sloppy on optimizations here.
   578 // it's OK to be slightly sloppy on optimizations here.
   571 class Opaque2Node : public Node {
   579 class Opaque2Node : public Node {
   572   virtual uint hash() const ;                  // { return NO_HASH; }
   580   virtual uint hash() const ;                  // { return NO_HASH; }
   573   virtual uint cmp( const Node &n ) const;
   581   virtual uint cmp( const Node &n ) const;
   574 public:
   582 public:
   575   Opaque2Node( Node *n ) : Node(0,n) {}
   583   Opaque2Node( Compile* C, Node *n ) : Node(0,n) {
       
   584     // Put it on the Macro nodes list to removed during macro nodes expansion.
       
   585     init_flags(Flag_is_macro);
       
   586     C->add_macro_node(this);
       
   587   }
   576   virtual int Opcode() const;
   588   virtual int Opcode() const;
   577   virtual const Type *bottom_type() const { return TypeInt::INT; }
   589   virtual const Type *bottom_type() const { return TypeInt::INT; }
   578 };
   590 };
   579 
   591 
   580 //----------------------PartialSubtypeCheckNode--------------------------------
   592 //----------------------PartialSubtypeCheckNode--------------------------------