src/share/vm/opto/phaseX.cpp

changeset 4315
2aff40cb4703
parent 4153
b9a9ed0f8eeb
child 4409
d092d1b31229
     1.1 --- a/src/share/vm/opto/phaseX.cpp	Tue Nov 27 12:48:52 2012 -0800
     1.2 +++ b/src/share/vm/opto/phaseX.cpp	Tue Nov 27 17:24:15 2012 -0800
     1.3 @@ -383,6 +383,8 @@
     1.4  
     1.5    // Identify nodes that are reachable from below, useful.
     1.6    C->identify_useful_nodes(_useful);
     1.7 +  // Update dead node list
     1.8 +  C->update_dead_node_list(_useful);
     1.9  
    1.10    // Remove all useless nodes from PhaseValues' recorded types
    1.11    // Must be done before disconnecting nodes to preserve hash-table-invariant
    1.12 @@ -1190,7 +1192,7 @@
    1.13              }
    1.14            }
    1.15          }
    1.16 -
    1.17 +        C->record_dead_node(dead->_idx);
    1.18          if (dead->is_macro()) {
    1.19            C->remove_macro_node(dead);
    1.20          }
    1.21 @@ -1199,6 +1201,11 @@
    1.22            continue;
    1.23          }
    1.24        }
    1.25 +      // Constant node that has no out-edges and has only one in-edge from
    1.26 +      // root is usually dead. However, sometimes reshaping walk makes
    1.27 +      // it reachable by adding use edges. So, we will NOT count Con nodes
    1.28 +      // as dead to be conservative about the dead node count at any
    1.29 +      // given time.
    1.30      }
    1.31  
    1.32      // Aggressively kill globally dead uses

mercurial