提交 34d8829c 编写于 作者: V vlivanov

8006095: C1: SIGSEGV w/ -XX:+LogCompilation

Summary: avoid printing inlining decision when compilation fails
Reviewed-by: kvn, roland
上级 988d63d2
...@@ -3223,7 +3223,12 @@ bool GraphBuilder::try_inline(ciMethod* callee, bool holder_known, Bytecodes::Co ...@@ -3223,7 +3223,12 @@ bool GraphBuilder::try_inline(ciMethod* callee, bool holder_known, Bytecodes::Co
} }
if (try_inline_full(callee, holder_known, bc, receiver)) if (try_inline_full(callee, holder_known, bc, receiver))
return true; return true;
print_inlining(callee, _inline_bailout_msg, /*success*/ false);
// Entire compilation could fail during try_inline_full call.
// In that case printing inlining decision info is useless.
if (!bailed_out())
print_inlining(callee, _inline_bailout_msg, /*success*/ false);
return false; return false;
} }
...@@ -3753,7 +3758,8 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode ...@@ -3753,7 +3758,8 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode
push_scope(callee, cont); push_scope(callee, cont);
// the BlockListBuilder for the callee could have bailed out // the BlockListBuilder for the callee could have bailed out
CHECK_BAILOUT_(false); if (bailed_out())
return false;
// Temporarily set up bytecode stream so we can append instructions // Temporarily set up bytecode stream so we can append instructions
// (only using the bci of this stream) // (only using the bci of this stream)
...@@ -3819,7 +3825,8 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode ...@@ -3819,7 +3825,8 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode
iterate_all_blocks(callee_start_block == NULL); iterate_all_blocks(callee_start_block == NULL);
// If we bailed out during parsing, return immediately (this is bad news) // If we bailed out during parsing, return immediately (this is bad news)
if (bailed_out()) return false; if (bailed_out())
return false;
// iterate_all_blocks theoretically traverses in random order; in // iterate_all_blocks theoretically traverses in random order; in
// practice, we have only traversed the continuation if we are // practice, we have only traversed the continuation if we are
...@@ -3828,9 +3835,6 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode ...@@ -3828,9 +3835,6 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode
!continuation()->is_set(BlockBegin::was_visited_flag), !continuation()->is_set(BlockBegin::was_visited_flag),
"continuation should not have been parsed yet if we created it"); "continuation should not have been parsed yet if we created it");
// If we bailed out during parsing, return immediately (this is bad news)
CHECK_BAILOUT_(false);
// At this point we are almost ready to return and resume parsing of // At this point we are almost ready to return and resume parsing of
// the caller back in the GraphBuilder. The only thing we want to do // the caller back in the GraphBuilder. The only thing we want to do
// first is an optimization: during parsing of the callee we // first is an optimization: during parsing of the callee we
...@@ -4171,7 +4175,10 @@ void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool succes ...@@ -4171,7 +4175,10 @@ void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool succes
else else
log->inline_success("receiver is statically known"); log->inline_success("receiver is statically known");
} else { } else {
log->inline_fail(msg); if (msg != NULL)
log->inline_fail(msg);
else
log->inline_fail("reason unknown");
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册