src/share/vm/opto/block.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7069452 Cdiff src/share/vm/opto/block.cpp

src/share/vm/opto/block.cpp

Print this page

        

*** 163,173 **** int success_result = completely_empty; int end_idx = _nodes.size()-1; // Check for ending goto ! if ((end_idx > 0) && (_nodes[end_idx]->is_Goto())) { success_result = empty_with_goto; end_idx--; } // Unreachable blocks are considered empty --- 163,173 ---- int success_result = completely_empty; int end_idx = _nodes.size()-1; // Check for ending goto ! if ((end_idx > 0) && (_nodes[end_idx]->is_MachGoto())) { success_result = empty_with_goto; end_idx--; } // Unreachable blocks are considered empty
*** 195,209 **** // executed infrequently. Check to see if the block ends in a Halt or // a low probability call. bool Block::has_uncommon_code() const { Node* en = end(); ! if (en->is_Goto()) en = en->in(0); if (en->is_Catch()) en = en->in(0); ! if (en->is_Proj() && en->in(0)->is_MachCall()) { MachCallNode* call = en->in(0)->as_MachCall(); if (call->cnt() != COUNT_UNKNOWN && call->cnt() <= PROB_UNLIKELY_MAG(4)) { // This is true for slow-path stubs like new_{instance,array}, // slow_arraycopy, complete_monitor_locking, uncommon_trap. // The magic number corresponds to the probability of an uncommon_trap, --- 195,209 ---- // executed infrequently. Check to see if the block ends in a Halt or // a low probability call. bool Block::has_uncommon_code() const { Node* en = end(); ! if (en->is_MachGoto()) en = en->in(0); if (en->is_Catch()) en = en->in(0); ! if (en->is_MachProj() && en->in(0)->is_MachCall()) { MachCallNode* call = en->in(0)->as_MachCall(); if (call->cnt() != COUNT_UNKNOWN && call->cnt() <= PROB_UNLIKELY_MAG(4)) { // This is true for slow-path stubs like new_{instance,array}, // slow_arraycopy, complete_monitor_locking, uncommon_trap. // The magic number corresponds to the probability of an uncommon_trap,
*** 943,954 **** j = b->end_idx(); Node *bp = (Node*)b->_nodes[b->_nodes.size()-1]->is_block_proj(); assert( bp, "last instruction must be a block proj" ); assert( bp == b->_nodes[j], "wrong number of successors for this block" ); if( bp->is_Catch() ) { ! while( b->_nodes[--j]->Opcode() == Op_MachProj ) ; ! assert( b->_nodes[j]->is_Call(), "CatchProj must follow call" ); } else if( bp->is_Mach() && bp->as_Mach()->ideal_Opcode() == Op_If ) { assert( b->_num_succs == 2, "Conditional branch must have two targets"); } } --- 943,954 ---- j = b->end_idx(); Node *bp = (Node*)b->_nodes[b->_nodes.size()-1]->is_block_proj(); assert( bp, "last instruction must be a block proj" ); assert( bp == b->_nodes[j], "wrong number of successors for this block" ); if( bp->is_Catch() ) { ! while( b->_nodes[--j]->is_MachProj() ) ; ! assert( b->_nodes[j]->is_MachCall(), "CatchProj must follow call" ); } else if( bp->is_Mach() && bp->as_Mach()->ideal_Opcode() == Op_If ) { assert( b->_num_succs == 2, "Conditional branch must have two targets"); } }
src/share/vm/opto/block.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File