src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7092905 Cdiff src/share/vm/opto/phaseX.cpp

src/share/vm/opto/phaseX.cpp

Print this page

        

*** 381,390 **** --- 381,392 ---- // to each SafePointNode at a backward branch. Inserted in add_safepoint(). if( !UseLoopSafepoints || !OptoRemoveUseless ) return; // Identify nodes that are reachable from below, useful. C->identify_useful_nodes(_useful); + // Update dead node list + C->update_dead_node_list(_useful); // Remove all useless nodes from PhaseValues' recorded types // Must be done before disconnecting nodes to preserve hash-table-invariant gvn->remove_useless_nodes(_useful.member_set());
*** 1188,1206 **** assert(!(i < imax), "sanity"); } } } } ! if (dead->is_macro()) { C->remove_macro_node(dead); } if (recurse) { continue; } } } // Aggressively kill globally dead uses // (Rather than pushing all the outs at once, we push one at a time, // plus the parent to resume later, because of the indefinite number --- 1190,1213 ---- assert(!(i < imax), "sanity"); } } } } ! C->record_dead_node(dead->_idx); if (dead->is_macro()) { C->remove_macro_node(dead); } if (recurse) { continue; } } + // Constant node that has no out-edges and has only one in-edge from + // root is usually dead. However, sometimes reshaping walk makes + // it reachable by adding use edges. So, we will NOT count Con nodes + // as dead to be conservative about the dead node count at any + // given time. } // Aggressively kill globally dead uses // (Rather than pushing all the outs at once, we push one at a time, // plus the parent to resume later, because of the indefinite number
src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File