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

src/share/vm/opto/addnode.hpp

Print this page




 134   AddPNode( Node *base, Node *ptr, Node *off ) : Node(0,base,ptr,off) {
 135     init_class_id(Class_AddP);
 136   }
 137   virtual int Opcode() const;
 138   virtual Node *Identity( PhaseTransform *phase );
 139   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 140   virtual const Type *Value( PhaseTransform *phase ) const;
 141   virtual const Type *bottom_type() const;
 142   virtual uint  ideal_reg() const { return Op_RegP; }
 143   Node         *base_node() { assert( req() > Base, "Missing base"); return in(Base); }
 144   static Node* Ideal_base_and_offset(Node* ptr, PhaseTransform* phase,
 145                                      // second return value:
 146                                      intptr_t& offset);
 147 
 148   // Collect the AddP offset values into the elements array, giving up
 149   // if there are more than length.
 150   int unpack_offsets(Node* elements[], int length);
 151 
 152   // Do not match base-ptr edge
 153   virtual uint match_edge(uint idx) const;
 154   static const Type *mach_bottom_type(const MachNode* n);  // used by ad_<arch>.hpp
 155 };
 156 
 157 //------------------------------OrINode----------------------------------------
 158 // Logically OR 2 integers.  Included with the ADD nodes because it inherits
 159 // all the behavior of addition on a ring.
 160 class OrINode : public AddNode {
 161 public:
 162   OrINode( Node *in1, Node *in2 ) : AddNode(in1,in2) {}
 163   virtual int Opcode() const;
 164   virtual const Type *add_ring( const Type *, const Type * ) const;
 165   virtual const Type *add_id() const { return TypeInt::ZERO; }
 166   virtual const Type *bottom_type() const { return TypeInt::INT; }
 167   virtual Node *Identity( PhaseTransform *phase );
 168   virtual uint ideal_reg() const { return Op_RegI; }
 169 };
 170 
 171 //------------------------------OrLNode----------------------------------------
 172 // Logically OR 2 longs.  Included with the ADD nodes because it inherits
 173 // all the behavior of addition on a ring.
 174 class OrLNode : public AddNode {




 134   AddPNode( Node *base, Node *ptr, Node *off ) : Node(0,base,ptr,off) {
 135     init_class_id(Class_AddP);
 136   }
 137   virtual int Opcode() const;
 138   virtual Node *Identity( PhaseTransform *phase );
 139   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 140   virtual const Type *Value( PhaseTransform *phase ) const;
 141   virtual const Type *bottom_type() const;
 142   virtual uint  ideal_reg() const { return Op_RegP; }
 143   Node         *base_node() { assert( req() > Base, "Missing base"); return in(Base); }
 144   static Node* Ideal_base_and_offset(Node* ptr, PhaseTransform* phase,
 145                                      // second return value:
 146                                      intptr_t& offset);
 147 
 148   // Collect the AddP offset values into the elements array, giving up
 149   // if there are more than length.
 150   int unpack_offsets(Node* elements[], int length);
 151 
 152   // Do not match base-ptr edge
 153   virtual uint match_edge(uint idx) const;

 154 };
 155 
 156 //------------------------------OrINode----------------------------------------
 157 // Logically OR 2 integers.  Included with the ADD nodes because it inherits
 158 // all the behavior of addition on a ring.
 159 class OrINode : public AddNode {
 160 public:
 161   OrINode( Node *in1, Node *in2 ) : AddNode(in1,in2) {}
 162   virtual int Opcode() const;
 163   virtual const Type *add_ring( const Type *, const Type * ) const;
 164   virtual const Type *add_id() const { return TypeInt::ZERO; }
 165   virtual const Type *bottom_type() const { return TypeInt::INT; }
 166   virtual Node *Identity( PhaseTransform *phase );
 167   virtual uint ideal_reg() const { return Op_RegI; }
 168 };
 169 
 170 //------------------------------OrLNode----------------------------------------
 171 // Logically OR 2 longs.  Included with the ADD nodes because it inherits
 172 // all the behavior of addition on a ring.
 173 class OrLNode : public AddNode {


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