src/share/vm/opto/ifnode.cpp

changeset 1286
fc4be448891f
parent 1040
98cb887364d3
child 1383
89e0543e1737
child 1448
ce590301ae2a
     1.1 --- a/src/share/vm/opto/ifnode.cpp	Wed Jul 15 13:37:35 2009 -0700
     1.2 +++ b/src/share/vm/opto/ifnode.cpp	Thu Jul 16 14:10:42 2009 -0700
     1.3 @@ -378,7 +378,18 @@
     1.4  
     1.5    // Force the original merge dead
     1.6    igvn->hash_delete(r);
     1.7 -  r->set_req_X(0,NULL,igvn);
     1.8 +  // First, remove region's dead users.
     1.9 +  for (DUIterator_Last lmin, l = r->last_outs(lmin); l >= lmin;) {
    1.10 +    Node* u = r->last_out(l);
    1.11 +    if( u == r ) {
    1.12 +      r->set_req(0, NULL);
    1.13 +    } else {
    1.14 +      assert(u->outcnt() == 0, "only dead users");
    1.15 +      igvn->remove_dead_node(u);
    1.16 +    }
    1.17 +    l -= 1;
    1.18 +  }
    1.19 +  igvn->remove_dead_node(r);
    1.20  
    1.21    // Now remove the bogus extra edges used to keep things alive
    1.22    igvn->remove_dead_node( hook );

mercurial