changeset 5687:0d1661d63d70

8012941: JSR 292: too deep inlining might crash compiler because of stack overflow Reviewed-by: kvn, twisti
author vlivanov
date Wed, 23 Oct 2013 20:20:03 +0400
parents d95eca175eff
children f7d928a3181c f01788f13696
files src/share/vm/c1/c1_GraphBuilder.cpp src/share/vm/c1/c1_globals.hpp
diffstat 2 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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");
--- 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")   \
                                                                             \