comparison src/share/vm/opto/block.cpp @ 893:dd0a4e1e219b

6851386: assert(b->find_node(def) < j,"uses must follow definitions") Summary: Add additional check for a tight loop. Reviewed-by: never
author kvn
date Sun, 26 Jul 2009 12:59:41 -0700
parents acba6af809c8
children c18cbe5936b8
comparison
equal deleted inserted replaced
892:a94af87c3357 893:dd0a4e1e219b
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 }