src/share/vm/opto/block.cpp

changeset 1328
dd0a4e1e219b
parent 1268
acba6af809c8
child 1907
c18cbe5936b8
     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");

mercurial