< prev index next >

src/hotspot/share/opto/block.cpp

Print this page
rev 54542 : 8213084: Rework and enhance Print[Opto]Assembly output
Reviewed-by:

*** 1,7 **** /* ! * Copyright (c) 1997, 2016, 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. --- 1,7 ---- /* ! * Copyright (c) 1997, 2019, 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.
*** 265,275 **** return false; } #ifndef PRODUCT void Block::dump_bidx(const Block* orig, outputStream* st) const { ! if (_pre_order) st->print("B%d",_pre_order); else st->print("N%d", head()->_idx); if (Verbose && orig != this) { // Dump the original block's idx st->print(" ("); --- 265,275 ---- return false; } #ifndef PRODUCT void Block::dump_bidx(const Block* orig, outputStream* st) const { ! if (_pre_order) st->print("B%d", _pre_order); else st->print("N%d", head()->_idx); if (Verbose && orig != this) { // Dump the original block's idx st->print(" (");
*** 289,320 **** st->print(" "); } } void Block::dump_head(const PhaseCFG* cfg, outputStream* st) const { ! // Print the basic block dump_bidx(this, st); ! st->print(": #\t"); ! // Print the incoming CFG edges and the outgoing CFG edges for( uint i=0; i<_num_succs; i++ ) { non_connector_successor(i)->dump_bidx(_succs[i], st); st->print(" "); } ! st->print("<- "); if( head()->is_block_start() ) { for (uint i=1; i<num_preds(); i++) { Node *s = pred(i); if (cfg != NULL) { Block *p = cfg->get_block_for_node(s); p->dump_pred(cfg, p, st); } else { ! while (!s->is_block_start()) s = s->in(0); st->print("N%d ", s->_idx ); } } } else { st->print("BLOCK HEAD IS JUNK "); } // Print loop, if any --- 289,326 ---- st->print(" "); } } void Block::dump_head(const PhaseCFG* cfg, outputStream* st) const { ! // Print the basic block. dump_bidx(this, st); ! st->print(": "); ! // Print the outgoing CFG edges. ! st->print("#\tout( "); for( uint i=0; i<_num_succs; i++ ) { non_connector_successor(i)->dump_bidx(_succs[i], st); st->print(" "); } ! ! // Print the incoming CFG edges. ! st->print(") <- "); if( head()->is_block_start() ) { + st->print("in( "); for (uint i=1; i<num_preds(); i++) { Node *s = pred(i); if (cfg != NULL) { Block *p = cfg->get_block_for_node(s); p->dump_pred(cfg, p, st); } else { ! while (!s->is_block_start()) { s = s->in(0); + } st->print("N%d ", s->_idx ); } } + st->print(") "); } else { st->print("BLOCK HEAD IS JUNK "); } // Print loop, if any
*** 325,340 **** LoopNode *loop = bh->as_Loop(); const Block *bx = cfg->get_block_for_node(loop->in(LoopNode::LoopBackControl)); while (bx->is_connector()) { bx = cfg->get_block_for_node(bx->pred(1)); } ! st->print("\tLoop: B%d-B%d ", bhead->_pre_order, bx->_pre_order); // Dump any loop-specific bits, especially for CountedLoops. loop->dump_spec(st); } else if (has_loop_alignment()) { ! st->print(" top-of-loop"); } st->print(" Freq: %g",_freq); if( Verbose || WizardMode ) { st->print(" IDom: %d/#%d", _idom ? _idom->_pre_order : 0, _dom_depth); st->print(" RegPressure: %d",_reg_pressure); st->print(" IHRP Index: %d",_ihrp_index); --- 331,349 ---- LoopNode *loop = bh->as_Loop(); const Block *bx = cfg->get_block_for_node(loop->in(LoopNode::LoopBackControl)); while (bx->is_connector()) { bx = cfg->get_block_for_node(bx->pred(1)); } ! st->print("Loop( B%d-B%d ", bhead->_pre_order, bx->_pre_order); // Dump any loop-specific bits, especially for CountedLoops. loop->dump_spec(st); + st->print(")"); } else if (has_loop_alignment()) { ! st->print("top-of-loop"); } + + // Print frequency and other optimization-relevant information st->print(" Freq: %g",_freq); if( Verbose || WizardMode ) { st->print(" IDom: %d/#%d", _idom ? _idom->_pre_order : 0, _dom_depth); st->print(" RegPressure: %d",_reg_pressure); st->print(" IHRP Index: %d",_ihrp_index);
< prev index next >