< prev index next >

src/hotspot/share/opto/multnode.hpp

Print this page

 26 #define SHARE_OPTO_MULTNODE_HPP
 27 
 28 #include "opto/node.hpp"
 29 
 30 class Matcher;
 31 class ProjNode;
 32 
 33 //------------------------------MultiNode--------------------------------------
 34 // This class defines a MultiNode, a Node which produces many values.  The
 35 // values are wrapped up in a tuple Type, i.e. a TypeTuple.
 36 class MultiNode : public Node {
 37 public:
 38   MultiNode( uint required ) : Node(required) {
 39     init_class_id(Class_Multi);
 40   }
 41   virtual int Opcode() const;
 42   virtual const Type *bottom_type() const = 0;
 43   virtual bool       is_CFG() const { return true; }
 44   virtual uint hash() const { return NO_HASH; }  // CFG nodes do not hash
 45   virtual const RegMask &out_RegMask() const;
 46   virtual Node *match( const ProjNode *proj, const Matcher *m );
 47   virtual uint ideal_reg() const { return NotAMachineReg; }
 48   ProjNode* proj_out(uint which_proj) const; // Get a named projection
 49   ProjNode* proj_out_or_null(uint which_proj) const;
 50   ProjNode* proj_out_or_null(uint which_proj, bool is_io_use) const;
 51   uint number_of_projs(uint which_proj) const;
 52   uint number_of_projs(uint which_proj, bool is_io_use) const;
 53 
 54 protected:
 55 
 56   // Provide single interface for DUIterator_Fast/DUIterator for template method below
 57   class UsesIteratorFast {
 58     DUIterator_Fast& _imax;
 59     DUIterator_Fast& _i;
 60     const Node* _node;
 61 
 62   public:
 63     bool cont() {
 64       return _i < _imax;
 65     }
 66     void next() {

 26 #define SHARE_OPTO_MULTNODE_HPP
 27 
 28 #include "opto/node.hpp"
 29 
 30 class Matcher;
 31 class ProjNode;
 32 
 33 //------------------------------MultiNode--------------------------------------
 34 // This class defines a MultiNode, a Node which produces many values.  The
 35 // values are wrapped up in a tuple Type, i.e. a TypeTuple.
 36 class MultiNode : public Node {
 37 public:
 38   MultiNode( uint required ) : Node(required) {
 39     init_class_id(Class_Multi);
 40   }
 41   virtual int Opcode() const;
 42   virtual const Type *bottom_type() const = 0;
 43   virtual bool       is_CFG() const { return true; }
 44   virtual uint hash() const { return NO_HASH; }  // CFG nodes do not hash
 45   virtual const RegMask &out_RegMask() const;
 46   virtual Node *match(const ProjNode *proj, const Matcher *m, const RegMask* mask);
 47   virtual uint ideal_reg() const { return NotAMachineReg; }
 48   ProjNode* proj_out(uint which_proj) const; // Get a named projection
 49   ProjNode* proj_out_or_null(uint which_proj) const;
 50   ProjNode* proj_out_or_null(uint which_proj, bool is_io_use) const;
 51   uint number_of_projs(uint which_proj) const;
 52   uint number_of_projs(uint which_proj, bool is_io_use) const;
 53 
 54 protected:
 55 
 56   // Provide single interface for DUIterator_Fast/DUIterator for template method below
 57   class UsesIteratorFast {
 58     DUIterator_Fast& _imax;
 59     DUIterator_Fast& _i;
 60     const Node* _node;
 61 
 62   public:
 63     bool cont() {
 64       return _i < _imax;
 65     }
 66     void next() {
< prev index next >