comparison src/share/vm/opto/phaseX.cpp @ 7206:d2f8c38e543d

Merge
author roland
date Fri, 07 Dec 2012 01:09:03 -0800
parents 2aff40cb4703
children d092d1b31229
comparison
equal deleted inserted replaced
7191:816b7e5bf2ed 7206:d2f8c38e543d
381 // to each SafePointNode at a backward branch. Inserted in add_safepoint(). 381 // to each SafePointNode at a backward branch. Inserted in add_safepoint().
382 if( !UseLoopSafepoints || !OptoRemoveUseless ) return; 382 if( !UseLoopSafepoints || !OptoRemoveUseless ) return;
383 383
384 // Identify nodes that are reachable from below, useful. 384 // Identify nodes that are reachable from below, useful.
385 C->identify_useful_nodes(_useful); 385 C->identify_useful_nodes(_useful);
386 // Update dead node list
387 C->update_dead_node_list(_useful);
386 388
387 // Remove all useless nodes from PhaseValues' recorded types 389 // Remove all useless nodes from PhaseValues' recorded types
388 // Must be done before disconnecting nodes to preserve hash-table-invariant 390 // Must be done before disconnecting nodes to preserve hash-table-invariant
389 gvn->remove_useless_nodes(_useful.member_set()); 391 gvn->remove_useless_nodes(_useful.member_set());
390 392
1188 assert(!(i < imax), "sanity"); 1190 assert(!(i < imax), "sanity");
1189 } 1191 }
1190 } 1192 }
1191 } 1193 }
1192 } 1194 }
1193 1195 C->record_dead_node(dead->_idx);
1194 if (dead->is_macro()) { 1196 if (dead->is_macro()) {
1195 C->remove_macro_node(dead); 1197 C->remove_macro_node(dead);
1196 } 1198 }
1197 1199
1198 if (recurse) { 1200 if (recurse) {
1199 continue; 1201 continue;
1200 } 1202 }
1201 } 1203 }
1204 // Constant node that has no out-edges and has only one in-edge from
1205 // root is usually dead. However, sometimes reshaping walk makes
1206 // it reachable by adding use edges. So, we will NOT count Con nodes
1207 // as dead to be conservative about the dead node count at any
1208 // given time.
1202 } 1209 }
1203 1210
1204 // Aggressively kill globally dead uses 1211 // Aggressively kill globally dead uses
1205 // (Rather than pushing all the outs at once, we push one at a time, 1212 // (Rather than pushing all the outs at once, we push one at a time,
1206 // plus the parent to resume later, because of the indefinite number 1213 // plus the parent to resume later, because of the indefinite number