< prev index next >
src/share/vm/opto/cfgnode.cpp
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:
@@ -2045,15 +2045,37 @@
const RegMask &GotoNode::out_RegMask() const {
return RegMask::Empty;
}
+#ifndef PRODUCT
+//-------------------------------rel-------------------------------------------
+// The related nodes of a GotoNode are all inputs at level 1, as well as the
+// outputs at level 1. This is regardless of compact mode.
+void GotoNode::rel(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const {
+ this->collect_nodes(in_rel, 1, false, false);
+ this->collect_nodes(out_rel, -1, false, false);
+}
+#endif
+
+
//=============================================================================
const RegMask &JumpNode::out_RegMask() const {
return RegMask::Empty;
}
+#ifndef PRODUCT
+//-------------------------------rel-------------------------------------------
+// The related nodes of a JumpNode are all inputs at level 1, as well as the
+// outputs at level 2 (to include actual jump targets beyond projection nodes).
+// This is regardless of compact mode.
+void JumpNode::rel(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const {
+ this->collect_nodes(in_rel, 1, false, false);
+ this->collect_nodes(out_rel, -2, false, false);
+}
+#endif
+
//=============================================================================
const RegMask &JProjNode::out_RegMask() const {
return RegMask::Empty;
}
@@ -2105,10 +2127,21 @@
#ifndef PRODUCT
void JumpProjNode::dump_spec(outputStream *st) const {
ProjNode::dump_spec(st);
st->print("@bci %d ",_dest_bci);
}
+
+void JumpProjNode::dump_comp_spec(outputStream *st) const {
+ ProjNode::dump_comp_spec(st);
+ st->print("(%d)%d@%d", _switch_val, _proj_no, _dest_bci);
+}
+
+void JumpProjNode::rel(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const {
+ // The related nodes of a JumpProjNode are its inputs and outputs at level 1.
+ this->collect_nodes(in_rel, 1, false, false);
+ this->collect_nodes(out_rel, -1, false, false);
+}
#endif
//=============================================================================
//------------------------------Value------------------------------------------
// Check for being unreachable, or for coming from a Rethrow. Rethrow's cannot
< prev index next >