# HG changeset patch # User vlivanov # Date 1382545203 -14400 # Node ID 0d1661d63d703894799f1831c01dd98f3f546bf2 # Parent d95eca175eff27086eded72602e3a2d96dc14440 8012941: JSR 292: too deep inlining might crash compiler because of stack overflow Reviewed-by: kvn, twisti diff -r d95eca175eff -r 0d1661d63d70 src/share/vm/c1/c1_GraphBuilder.cpp --- a/src/share/vm/c1/c1_GraphBuilder.cpp Wed Oct 23 20:15:24 2013 +0400 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp Wed Oct 23 20:20:03 2013 +0400 @@ -3768,6 +3768,7 @@ // now perform tests that are based on flag settings if (callee->force_inline()) { + if (inline_level() > MaxForceInlineLevel) INLINE_BAILOUT("MaxForceInlineLevel"); print_inlining(callee, "force inline by annotation"); } else if (callee->should_inline()) { print_inlining(callee, "force inline by CompileOracle"); diff -r d95eca175eff -r 0d1661d63d70 src/share/vm/c1/c1_globals.hpp --- a/src/share/vm/c1/c1_globals.hpp Wed Oct 23 20:15:24 2013 +0400 +++ b/src/share/vm/c1/c1_globals.hpp Wed Oct 23 20:20:03 2013 +0400 @@ -341,6 +341,8 @@ diagnostic(bool, C1PatchInvokeDynamic, true, \ "Patch invokedynamic appendix not known at compile time") \ \ + develop(intx, MaxForceInlineLevel, 100, \ + "maximum number of nested @ForceInline calls that are inlined") \ \