Mercurial > hg > truffle
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 } |