提交 5b3ed02e 编写于 作者: R roland

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
上级 936dcbcc
...@@ -305,11 +305,13 @@ class LateInlineCallGenerator : public DirectCallGenerator { ...@@ -305,11 +305,13 @@ class LateInlineCallGenerator : public DirectCallGenerator {
void LateInlineCallGenerator::do_late_inline() { void LateInlineCallGenerator::do_late_inline() {
// Can't inline it // Can't inline it
if (call_node() == NULL || call_node()->outcnt() == 0 || if (call_node() == NULL || call_node()->outcnt() == 0 ||
call_node()->in(0) == NULL || call_node()->in(0)->is_top()) call_node()->in(0) == NULL || call_node()->in(0)->is_top()) {
return; return;
}
const TypeTuple *r = call_node()->tf()->domain();
for (int i1 = 0; i1 < method()->arg_size(); i1++) { for (int i1 = 0; i1 < method()->arg_size(); i1++) {
if (call_node()->in(TypeFunc::Parms + i1)->is_top()) { if (call_node()->in(TypeFunc::Parms + i1)->is_top() && r->field_at(TypeFunc::Parms + i1) != Type::HALF) {
assert(Compile::current()->inlining_incrementally(), "shouldn't happen during parsing"); assert(Compile::current()->inlining_incrementally(), "shouldn't happen during parsing");
return; return;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册