908 // when CreateEx node is moved in build_ifg_physical(). |
908 // when CreateEx node is moved in build_ifg_physical(). |
909 if( _bbs[def->_idx] == b && |
909 if( _bbs[def->_idx] == b && |
910 !(b->head()->is_Loop() && n->is_Phi()) && |
910 !(b->head()->is_Loop() && n->is_Phi()) && |
911 // See (+++) comment in reg_split.cpp |
911 // See (+++) comment in reg_split.cpp |
912 !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) { |
912 !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) { |
913 assert( b->find_node(def) < j, "uses must follow definitions" ); |
913 bool is_loop = false; |
|
914 if (n->is_Phi()) { |
|
915 for( uint l = 1; l < def->req(); l++ ) { |
|
916 if (n == def->in(l)) { |
|
917 is_loop = true; |
|
918 break; // Some kind of loop |
|
919 } |
|
920 } |
|
921 } |
|
922 assert( is_loop || b->find_node(def) < j, "uses must follow definitions" ); |
914 } |
923 } |
915 if( def->is_SafePointScalarObject() ) { |
924 if( def->is_SafePointScalarObject() ) { |
916 assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node"); |
925 assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node"); |
917 assert(_bbs[def->_idx] == _bbs[def->in(0)->_idx], "SafePointScalarObject Node should be at the same block as its control edge"); |
926 assert(_bbs[def->_idx] == _bbs[def->in(0)->_idx], "SafePointScalarObject Node should be at the same block as its control edge"); |
918 } |
927 } |