< 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,2059 **** --- 2045,2081 ---- 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,2114 **** --- 2127,2147 ---- #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 >