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