提交 93b4b14b 编写于 作者: V vlivanov

8035887: VM crashes trying to force inlining the recursive call

Reviewed-by: kvn, twisti
上级 f43232b8
...@@ -3767,11 +3767,14 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode ...@@ -3767,11 +3767,14 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode
} }
// now perform tests that are based on flag settings // now perform tests that are based on flag settings
if (callee->force_inline()) { if (callee->force_inline() || callee->should_inline()) {
if (inline_level() > MaxForceInlineLevel) INLINE_BAILOUT("MaxForceInlineLevel"); if (inline_level() > MaxForceInlineLevel ) INLINE_BAILOUT("MaxForceInlineLevel");
print_inlining(callee, "force inline by annotation"); if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep");
} else if (callee->should_inline()) {
print_inlining(callee, "force inline by CompileOracle"); const char* msg = "";
if (callee->force_inline()) msg = "force inline by annotation";
if (callee->should_inline()) msg = "force inline by CompileOracle";
print_inlining(callee, msg);
} else { } else {
// use heuristic controls on inlining // use heuristic controls on inlining
if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep"); if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep");
......
...@@ -2986,7 +2986,8 @@ class CommandLineFlags { ...@@ -2986,7 +2986,8 @@ class CommandLineFlags {
"maximum number of nested recursive calls that are inlined") \ "maximum number of nested recursive calls that are inlined") \
\ \
develop(intx, MaxForceInlineLevel, 100, \ develop(intx, MaxForceInlineLevel, 100, \
"maximum number of nested @ForceInline calls that are inlined") \ "maximum number of nested calls that are forced for inlining " \
"(using CompilerOracle or marked w/ @ForceInline)") \
\ \
product_pd(intx, InlineSmallCode, \ product_pd(intx, InlineSmallCode, \
"Only inline already compiled methods if their code size is " \ "Only inline already compiled methods if their code size is " \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册