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