equal
deleted
inserted
replaced
2254 // in the block), because they have delay slots we can fill. Calls all |
2254 // in the block), because they have delay slots we can fill. Calls all |
2255 // have their delay slots filled in the template expansions, so we don't |
2255 // have their delay slots filled in the template expansions, so we don't |
2256 // bother scheduling them. |
2256 // bother scheduling them. |
2257 Node *last = bb->_nodes[_bb_end]; |
2257 Node *last = bb->_nodes[_bb_end]; |
2258 if( last->is_Catch() || |
2258 if( last->is_Catch() || |
2259 (last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) { |
2259 // Exclude unreachable path case when Halt node is in a separate block. |
|
2260 (_bb_end > 1 && last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) { |
2260 // There must be a prior call. Skip it. |
2261 // There must be a prior call. Skip it. |
2261 while( !bb->_nodes[--_bb_end]->is_Call() ) { |
2262 while( !bb->_nodes[--_bb_end]->is_Call() ) { |
2262 assert( bb->_nodes[_bb_end]->is_Proj(), "skipping projections after expected call" ); |
2263 assert( bb->_nodes[_bb_end]->is_Proj(), "skipping projections after expected call" ); |
2263 } |
2264 } |
2264 } else if( last->is_MachNullCheck() ) { |
2265 } else if( last->is_MachNullCheck() ) { |