< prev index next >

src/share/vm/opto/divnode.hpp

Print this page
rev 8739 : 8004073: Implement C2 Ideal node specific dump() method
Summary: add Node::dump_rel() to dump a node and its related nodes (the notion of "related" depends on the node at hand); add Node::dump_comp() to dump a node in compact representation; add Node::dump_rel_comp() to dump a node and its related nodes in compact representation; add the required machinery; extend some C2 IR nodes with compact and related dumping
Reviewed-by:

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -47,10 +47,14 @@
   virtual Node *Identity( PhaseTransform *phase );
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return TypeInt::INT; }
   virtual uint ideal_reg() const { return Op_RegI; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------DivLNode---------------------------------------
 // Long division
 class DivLNode : public Node {

@@ -60,10 +64,14 @@
   virtual Node *Identity( PhaseTransform *phase );
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return TypeLong::LONG; }
   virtual uint ideal_reg() const { return Op_RegL; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------DivFNode---------------------------------------
 // Float division
 class DivFNode : public Node {

@@ -73,10 +81,14 @@
   virtual Node *Identity( PhaseTransform *phase );
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return Type::FLOAT; }
   virtual uint ideal_reg() const { return Op_RegF; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------DivDNode---------------------------------------
 // Double division
 class DivDNode : public Node {

@@ -86,10 +98,14 @@
   virtual Node *Identity( PhaseTransform *phase );
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return Type::DOUBLE; }
   virtual uint ideal_reg() const { return Op_RegD; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------ModINode---------------------------------------
 // Integer modulus
 class ModINode : public Node {

@@ -98,10 +114,14 @@
   virtual int Opcode() const;
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *bottom_type() const { return TypeInt::INT; }
   virtual uint ideal_reg() const { return Op_RegI; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------ModLNode---------------------------------------
 // Long modulus
 class ModLNode : public Node {

@@ -110,10 +130,14 @@
   virtual int Opcode() const;
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   virtual const Type *bottom_type() const { return TypeLong::LONG; }
   virtual uint ideal_reg() const { return Op_RegL; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------ModFNode---------------------------------------
 // Float Modulus
 class ModFNode : public Node {

@@ -121,10 +145,14 @@
   ModFNode( Node *c, Node *in1, Node *in2 ) : Node(c,in1, in2) {}
   virtual int Opcode() const;
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return Type::FLOAT; }
   virtual uint ideal_reg() const { return Op_RegF; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------ModDNode---------------------------------------
 // Double Modulus
 class ModDNode : public Node {

@@ -132,10 +160,14 @@
   ModDNode( Node *c, Node *in1, Node *in2 ) : Node(c, in1, in2) {}
   virtual int Opcode() const;
   virtual const Type *Value( PhaseTransform *phase ) const;
   virtual const Type *bottom_type() const { return Type::DOUBLE; }
   virtual uint ideal_reg() const { return Op_RegD; }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------DivModNode---------------------------------------
 // Division with remainder result.
 class DivModNode : public MultiNode {

@@ -154,10 +186,14 @@
   virtual bool is_CFG() const  { return false; }
   virtual uint ideal_reg() const { return NotAMachineReg; }
 
   ProjNode* div_proj() { return proj_out(div_proj_num); }
   ProjNode* mod_proj() { return proj_out(mod_proj_num); }
+
+#ifndef PRODUCT
+  REL_IN_DATA_OUT_1;
+#endif
 };
 
 //------------------------------DivModINode---------------------------------------
 // Integer division with remainder result.
 class DivModINode : public DivModNode {
< prev index next >