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

src/share/vm/opto/multnode.hpp

Print this page




  44   ProjNode* proj_out(uint which_proj) const; // Get a named projection
  45 
  46 };
  47 
  48 //------------------------------ProjNode---------------------------------------
  49 // This class defines a Projection node.  Projections project a single element
  50 // out of a tuple (or Signature) type.  Only MultiNodes produce TypeTuple
  51 // results.
  52 class ProjNode : public Node {
  53 protected:
  54   virtual uint hash() const;
  55   virtual uint cmp( const Node &n ) const;
  56   virtual uint size_of() const;
  57   void check_con() const;       // Called from constructor.
  58 
  59 public:
  60   ProjNode( Node *src, uint con, bool io_use = false )
  61     : Node( src ), _con(con), _is_io_use(io_use)
  62   {
  63     init_class_id(Class_Proj);



  64     debug_only(check_con());
  65   }
  66   const uint _con;              // The field in the tuple we are projecting
  67   const bool _is_io_use;        // Used to distinguish between the projections
  68                                 // used on the control and io paths from a macro node
  69   virtual int Opcode() const;
  70   virtual bool      is_CFG() const;
  71   virtual bool depends_only_on_test() const { return false; }
  72   virtual const Type *bottom_type() const;
  73   virtual const TypePtr *adr_type() const;
  74   virtual bool pinned() const;
  75   virtual const Type *Value( PhaseTransform *phase ) const;
  76   virtual uint ideal_reg() const;
  77   virtual const RegMask &out_RegMask() const;
  78 #ifndef PRODUCT
  79   virtual void dump_spec(outputStream *st) const;
  80 #endif
  81 };


  44   ProjNode* proj_out(uint which_proj) const; // Get a named projection
  45 
  46 };
  47 
  48 //------------------------------ProjNode---------------------------------------
  49 // This class defines a Projection node.  Projections project a single element
  50 // out of a tuple (or Signature) type.  Only MultiNodes produce TypeTuple
  51 // results.
  52 class ProjNode : public Node {
  53 protected:
  54   virtual uint hash() const;
  55   virtual uint cmp( const Node &n ) const;
  56   virtual uint size_of() const;
  57   void check_con() const;       // Called from constructor.
  58 
  59 public:
  60   ProjNode( Node *src, uint con, bool io_use = false )
  61     : Node( src ), _con(con), _is_io_use(io_use)
  62   {
  63     init_class_id(Class_Proj);
  64     // Optimistic setting. Need additional checks in Node::is_dead_loop_safe().
  65     if (con != TypeFunc::Memory || src->is_Start())
  66       init_flags(Flag_is_dead_loop_safe);
  67     debug_only(check_con());
  68   }
  69   const uint _con;              // The field in the tuple we are projecting
  70   const bool _is_io_use;        // Used to distinguish between the projections
  71                                 // used on the control and io paths from a macro node
  72   virtual int Opcode() const;
  73   virtual bool      is_CFG() const;
  74   virtual bool depends_only_on_test() const { return false; }
  75   virtual const Type *bottom_type() const;
  76   virtual const TypePtr *adr_type() const;
  77   virtual bool pinned() const;
  78   virtual const Type *Value( PhaseTransform *phase ) const;
  79   virtual uint ideal_reg() const;
  80   virtual const RegMask &out_RegMask() const;
  81 #ifndef PRODUCT
  82   virtual void dump_spec(outputStream *st) const;
  83 #endif
  84 };
src/share/vm/opto/multnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File