# HG changeset patch # User kvn # Date 1239123904 25200 # Node ID 4ec1257180ec461b3310646eb959ae5677ee3a50 # Parent 819880572f0972750d759c1fa6f8705c33b42172 6826960: C2 Sparc: assert(bb->_nodes(_bb_end)->is_Proj(),"skipping projections after expected call") Summary: Add the check when a Halt node is placed in a separate block. Reviewed-by: twisti diff -r 819880572f09 -r 4ec1257180ec src/share/vm/opto/output.cpp --- a/src/share/vm/opto/output.cpp Mon Apr 06 11:53:17 2009 -0700 +++ b/src/share/vm/opto/output.cpp Tue Apr 07 10:05:04 2009 -0700 @@ -2256,7 +2256,8 @@ // bother scheduling them. Node *last = bb->_nodes[_bb_end]; if( last->is_Catch() || - (last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) { + // Exclude unreachable path case when Halt node is in a separate block. + (_bb_end > 1 && last->is_Mach() && last->as_Mach()->ideal_Opcode() == Op_Halt) ) { // There must be a prior call. Skip it. while( !bb->_nodes[--_bb_end]->is_Call() ) { assert( bb->_nodes[_bb_end]->is_Proj(), "skipping projections after expected call" );