comparison src/share/vm/opto/callGenerator.cpp @ 7997:8bd61471a109

8007144: Incremental inlining mistakes some call sites for dead ones and doesn't inline them Summary: wrong detection for dead call sites. Reviewed-by: kvn
author roland
date Mon, 04 Feb 2013 11:30:37 +0100
parents 5698813d45eb
children 6f3fd5150b67
comparison
equal deleted inserted replaced
7996:39901f2f1abe 7997:8bd61471a109
303 }; 303 };
304 304
305 void LateInlineCallGenerator::do_late_inline() { 305 void LateInlineCallGenerator::do_late_inline() {
306 // Can't inline it 306 // Can't inline it
307 if (call_node() == NULL || call_node()->outcnt() == 0 || 307 if (call_node() == NULL || call_node()->outcnt() == 0 ||
308 call_node()->in(0) == NULL || call_node()->in(0)->is_top()) 308 call_node()->in(0) == NULL || call_node()->in(0)->is_top()) {
309 return; 309 return;
310 310 }
311
312 const TypeTuple *r = call_node()->tf()->domain();
311 for (int i1 = 0; i1 < method()->arg_size(); i1++) { 313 for (int i1 = 0; i1 < method()->arg_size(); i1++) {
312 if (call_node()->in(TypeFunc::Parms + i1)->is_top()) { 314 if (call_node()->in(TypeFunc::Parms + i1)->is_top() && r->field_at(TypeFunc::Parms + i1) != Type::HALF) {
313 assert(Compile::current()->inlining_incrementally(), "shouldn't happen during parsing"); 315 assert(Compile::current()->inlining_incrementally(), "shouldn't happen during parsing");
314 return; 316 return;
315 } 317 }
316 } 318 }
317 319