comparison src/share/vm/opto/loopnode.cpp @ 8868:30f42e691e70

8004640: C2 assert failure in memnode.cpp: NULL+offs not RAW address Summary: always transform AddP nodes in IdealKit by calling _gvn.transform(). Reviewed-by: roland, twisti
author kvn
date Tue, 26 Mar 2013 12:55:26 -0700
parents 8b3da8d14c93
children f2110083203d
comparison
equal deleted inserted replaced
8867:b808febcad9a 8868:30f42e691e70
2249 assert(C->unique() == unique, "verification mode made Nodes? ? ?"); 2249 assert(C->unique() == unique, "verification mode made Nodes? ? ?");
2250 assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything"); 2250 assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything");
2251 return; 2251 return;
2252 } 2252 }
2253 2253
2254 // clear out the dead code after build_loop_late
2255 while (_deadlist.size()) {
2256 _igvn.remove_globally_dead_node(_deadlist.pop());
2257 }
2258
2254 if (stop_early) { 2259 if (stop_early) {
2255 assert(do_expensive_nodes, "why are we here?"); 2260 assert(do_expensive_nodes, "why are we here?");
2256 if (process_expensive_nodes()) { 2261 if (process_expensive_nodes()) {
2257 // If we made some progress when processing expensive nodes then 2262 // If we made some progress when processing expensive nodes then
2258 // the IGVN may modify the graph in a way that will allow us to 2263 // the IGVN may modify the graph in a way that will allow us to
2259 // make some more progress: we need to try processing expensive 2264 // make some more progress: we need to try processing expensive
2260 // nodes again. 2265 // nodes again.
2261 C->set_major_progress(); 2266 C->set_major_progress();
2262 } 2267 }
2263
2264 _igvn.optimize(); 2268 _igvn.optimize();
2265
2266 return; 2269 return;
2267 } 2270 }
2268 2271
2269 // Some parser-inserted loop predicates could never be used by loop 2272 // Some parser-inserted loop predicates could never be used by loop
2270 // predication or they were moved away from loop during some optimizations. 2273 // predication or they were moved away from loop during some optimizations.
2271 // For example, peeling. Eliminate them before next loop optimizations. 2274 // For example, peeling. Eliminate them before next loop optimizations.
2272 if (UseLoopPredicate || LoopLimitCheck) { 2275 if (UseLoopPredicate || LoopLimitCheck) {
2273 eliminate_useless_predicates(); 2276 eliminate_useless_predicates();
2274 }
2275
2276 // clear out the dead code
2277 while(_deadlist.size()) {
2278 _igvn.remove_globally_dead_node(_deadlist.pop());
2279 } 2277 }
2280 2278
2281 #ifndef PRODUCT 2279 #ifndef PRODUCT
2282 C->verify_graph_edges(); 2280 C->verify_graph_edges();
2283 if (_verify_me) { // Nested verify pass? 2281 if (_verify_me) { // Nested verify pass?