Mercurial > hg > truffle
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 |