< prev index next >

src/share/vm/opto/cfgnode.hpp

Print this page

        

@@ -83,11 +83,11 @@
   }
   PhiNode* has_phi() const;        // returns an arbitrary phi user, or NULL
   PhiNode* has_unique_phi() const; // returns the unique phi user, or NULL
   // Is this region node unreachable from root?
   bool is_unreachable_region(PhaseGVN *phase) const;
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool pinned() const { return (const Node *)in(0) == this; }
   virtual bool  is_CFG   () const { return true; }
   virtual uint hash() const { return NO_HASH; }  // CFG nodes do not hash
   virtual bool depends_only_on_test() const { return false; }
   virtual const Type *bottom_type() const { return Type::CONTROL; }

@@ -101,16 +101,16 @@
 //------------------------------JProjNode--------------------------------------
 // jump projection for node that produces multiple control-flow paths
 class JProjNode : public ProjNode {
  public:
   JProjNode( Node* ctrl, uint idx ) : ProjNode(ctrl,idx) {}
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool  is_CFG() const { return true; }
   virtual uint  hash() const { return NO_HASH; }  // CFG nodes do not hash
   virtual const Node* is_block_proj() const { return in(0); }
   virtual const RegMask& out_RegMask() const;
-  virtual uint  ideal_reg() const { return 0; }
+  virtual Opcodes ideal_reg() const { return Opcodes::Op_Node; }
 };
 
 //------------------------------PhiNode----------------------------------------
 // PhiNodes merge values from different Control paths.  Slot 0 points to the
 // controlling RegionNode.  Other slots map 1-for-1 with incoming control flow

@@ -188,11 +188,11 @@
   enum LoopSafety { Safe = 0, Unsafe, UnsafeLoop };
   LoopSafety simple_data_loop_check(Node *in) const;
   // Is it unsafe data loop? It becomes a dead loop if this phi node removed.
   bool is_unsafe_data_reference(Node *in) const;
   int  is_diamond_phi(bool check_control_only = false) const;
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool pinned() const { return in(0) != 0; }
   virtual const TypePtr *adr_type() const { verify_adr_type(true); return _adr_type; }
 
   const int inst_id()     const { return _inst_id; }
   const int inst_index()  const { return _inst_index; }

@@ -225,11 +225,11 @@
 //------------------------------GotoNode---------------------------------------
 // GotoNodes perform direct branches.
 class GotoNode : public Node {
 public:
   GotoNode( Node *control ) : Node(control) {}
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool pinned() const { return true; }
   virtual bool  is_CFG() const { return true; }
   virtual uint hash() const { return NO_HASH; }  // CFG nodes do not hash
   virtual const Node *is_block_proj() const { return this; }
   virtual bool depends_only_on_test() const { return false; }

@@ -246,16 +246,16 @@
 //------------------------------CProjNode--------------------------------------
 // control projection for node that produces multiple control-flow paths
 class CProjNode : public ProjNode {
 public:
   CProjNode( Node *ctrl, uint idx ) : ProjNode(ctrl,idx) {}
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool  is_CFG() const { return true; }
   virtual uint hash() const { return NO_HASH; }  // CFG nodes do not hash
   virtual const Node *is_block_proj() const { return in(0); }
   virtual const RegMask &out_RegMask() const;
-  virtual uint ideal_reg() const { return 0; }
+  virtual Opcodes ideal_reg() const { return Opcodes::Op_Node; }
 };
 
 //---------------------------MultiBranchNode-----------------------------------
 // This class defines a MultiBranchNode, a MultiNode which yields multiple
 // control values. These are distinguished from other types of MultiNodes

@@ -371,11 +371,11 @@
     : MultiBranchNode(2), _prob(p), _fcnt(fcnt) {
     init_class_id(Class_If);
     init_req(0,control);
     init_req(1,b);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool pinned() const { return true; }
   virtual const Type *bottom_type() const { return TypeTuple::IFBOTH; }
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type* Value(PhaseGVN* phase) const;
   virtual int required_outcnt() const { return 2; }

@@ -402,11 +402,11 @@
   RangeCheckNode(Node* control, Node *b, float p, float fcnt)
     : IfNode(control, b, p, fcnt) {
     init_class_id(Class_RangeCheck);
   }
 
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual Node* Ideal(PhaseGVN *phase, bool can_reshape);
 };
 
 class IfProjNode : public CProjNode {
 public:

@@ -426,22 +426,22 @@
 class IfTrueNode : public IfProjNode {
 public:
   IfTrueNode( IfNode *ifnode ) : IfProjNode(ifnode,1) {
     init_class_id(Class_IfTrue);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
 
 protected:
   virtual bool always_taken(const TypeTuple* t) const { return t == TypeTuple::IFTRUE; }
 };
 
 class IfFalseNode : public IfProjNode {
 public:
   IfFalseNode( IfNode *ifnode ) : IfProjNode(ifnode,0) {
     init_class_id(Class_IfFalse);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
 
 protected:
   virtual bool always_taken(const TypeTuple* t) const { return t == TypeTuple::IFFALSE; }
 };
 

@@ -462,11 +462,11 @@
   PCTableNode( Node *ctrl, Node *idx, uint size ) : MultiBranchNode(2), _size(size) {
     init_class_id(Class_PCTable);
     init_req(0, ctrl);
     init_req(1, idx);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual const Type* Value(PhaseGVN* phase) const;
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *bottom_type() const;
   virtual bool pinned() const { return true; }
   virtual int required_outcnt() const { return _size; }

@@ -478,11 +478,11 @@
 class JumpNode : public PCTableNode {
 public:
   JumpNode( Node* control, Node* switch_val, uint size) : PCTableNode(control, switch_val, size) {
     init_class_id(Class_Jump);
   }
-  virtual int   Opcode() const;
+  virtual Opcodes  Opcode() const;
   virtual const RegMask& out_RegMask() const;
   virtual const Node* is_block_proj() const { return this; }
 #ifndef PRODUCT
   virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const;
 #endif

@@ -501,11 +501,11 @@
   JumpProjNode(Node* jumpnode, uint proj_no, int dest_bci, int switch_val)
     : JProjNode(jumpnode, proj_no), _dest_bci(dest_bci), _proj_no(proj_no), _switch_val(switch_val) {
     init_class_id(Class_JumpProj);
   }
 
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual const Type* bottom_type() const { return Type::CONTROL; }
   int  dest_bci()    const { return _dest_bci; }
   int  switch_val()  const { return _switch_val; }
   uint proj_no()     const { return _proj_no; }
 #ifndef PRODUCT

@@ -522,11 +522,11 @@
 class CatchNode : public PCTableNode {
 public:
   CatchNode( Node *ctrl, Node *idx, uint size ) : PCTableNode(ctrl,idx,size){
     init_class_id(Class_Catch);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual const Type* Value(PhaseGVN* phase) const;
 };
 
 // CatchProjNode controls which exception handler is targetted after a call.
 // It is passed in the bci of the target handler, or no_handler_bci in case

@@ -550,11 +550,11 @@
     : CProjNode(catchnode, proj_no), _handler_bci(handler_bci) {
     init_class_id(Class_CatchProj);
     assert(proj_no != fall_through_index || handler_bci < 0, "fall through case must have bci < 0");
   }
 
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual Node* Identity(PhaseGVN* phase);
   virtual const Type *bottom_type() const { return Type::CONTROL; }
   int  handler_bci() const        { return _handler_bci; }
   bool is_handler_proj() const    { return _handler_bci >= 0; }
 #ifndef PRODUCT

@@ -569,25 +569,25 @@
 public:
   CreateExNode(const Type* t, Node* control, Node* i_o) : TypeNode(t, 2) {
     init_req(0, control);
     init_req(1, i_o);
   }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual Node* Identity(PhaseGVN* phase);
   virtual bool pinned() const { return true; }
   uint match_edge(uint idx) const { return 0; }
-  virtual uint ideal_reg() const { return Op_RegP; }
+  virtual Opcodes ideal_reg() const { return Opcodes::Op_RegP; }
 };
 
 //------------------------------NeverBranchNode-------------------------------
 // The never-taken branch.  Used to give the appearance of exiting infinite
 // loops to those algorithms that like all paths to be reachable.  Encodes
 // empty.
 class NeverBranchNode : public MultiBranchNode {
 public:
   NeverBranchNode( Node *ctrl ) : MultiBranchNode(1) { init_req(0,ctrl); }
-  virtual int Opcode() const;
+  virtual Opcodes Opcode() const;
   virtual bool pinned() const { return true; };
   virtual const Type *bottom_type() const { return TypeTuple::IFBOTH; }
   virtual const Type* Value(PhaseGVN* phase) const;
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual int required_outcnt() const { return 2; }
< prev index next >