1.1 --- a/src/share/vm/opto/block.cpp Fri Jul 24 12:40:40 2009 -0700 1.2 +++ b/src/share/vm/opto/block.cpp Sun Jul 26 12:59:41 2009 -0700 1.3 @@ -910,7 +910,16 @@ 1.4 !(b->head()->is_Loop() && n->is_Phi()) && 1.5 // See (+++) comment in reg_split.cpp 1.6 !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) { 1.7 - assert( b->find_node(def) < j, "uses must follow definitions" ); 1.8 + bool is_loop = false; 1.9 + if (n->is_Phi()) { 1.10 + for( uint l = 1; l < def->req(); l++ ) { 1.11 + if (n == def->in(l)) { 1.12 + is_loop = true; 1.13 + break; // Some kind of loop 1.14 + } 1.15 + } 1.16 + } 1.17 + assert( is_loop || b->find_node(def) < j, "uses must follow definitions" ); 1.18 } 1.19 if( def->is_SafePointScalarObject() ) { 1.20 assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node");