< prev index next >

src/hotspot/share/opto/multnode.hpp

Print this page

 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 bool depends_only_on_test() const { return false; }
 46   virtual const RegMask &out_RegMask() const;
 47   virtual Node *match( const ProjNode *proj, const Matcher *m );
 48   virtual uint ideal_reg() const { return NotAMachineReg; }
 49   ProjNode* proj_out(uint which_proj) const; // Get a named projection
 50   ProjNode* proj_out_or_null(uint which_proj) const;
 51   ProjNode* proj_out_or_null(uint which_proj, bool is_io_use) const;
 52   uint number_of_projs(uint which_proj) const;
 53   uint number_of_projs(uint which_proj, bool is_io_use) const;
 54 
 55 protected:
 56 
 57   // Provide single interface for DUIterator_Fast/DUIterator for template method below
 58   class UsesIteratorFast {
 59     DUIterator_Fast& _imax;
 60     DUIterator_Fast& _i;
 61     const Node* _node;
 62 
 63   public:
 64     bool cont() {
 65       return _i < _imax;
 66     }
 67     void next() {

 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 bool depends_only_on_test() const { return false; }
 46   virtual const RegMask &out_RegMask() const;
 47   virtual Node *match(const ProjNode *proj, const Matcher *m, const RegMask* mask);
 48   virtual uint ideal_reg() const { return NotAMachineReg; }
 49   ProjNode* proj_out(uint which_proj) const; // Get a named projection
 50   ProjNode* proj_out_or_null(uint which_proj) const;
 51   ProjNode* proj_out_or_null(uint which_proj, bool is_io_use) const;
 52   uint number_of_projs(uint which_proj) const;
 53   uint number_of_projs(uint which_proj, bool is_io_use) const;
 54 
 55 protected:
 56 
 57   // Provide single interface for DUIterator_Fast/DUIterator for template method below
 58   class UsesIteratorFast {
 59     DUIterator_Fast& _imax;
 60     DUIterator_Fast& _i;
 61     const Node* _node;
 62 
 63   public:
 64     bool cont() {
 65       return _i < _imax;
 66     }
 67     void next() {
< prev index next >