comparison src/share/vm/c1/c1_GraphBuilder.cpp @ 17819:f47fa50d9b9c

8035887: VM crashes trying to force inlining the recursive call Reviewed-by: kvn, twisti
author vlivanov
date Fri, 28 Mar 2014 10:12:48 -0700
parents f834ae379225
children 45e59fae8f2b
comparison
equal deleted inserted replaced
17818:75ad4240c15c 17819:f47fa50d9b9c
3765 if (is_profiling() && !callee->ensure_method_data()) { 3765 if (is_profiling() && !callee->ensure_method_data()) {
3766 INLINE_BAILOUT("mdo allocation failed"); 3766 INLINE_BAILOUT("mdo allocation failed");
3767 } 3767 }
3768 3768
3769 // now perform tests that are based on flag settings 3769 // now perform tests that are based on flag settings
3770 if (callee->force_inline()) { 3770 if (callee->force_inline() || callee->should_inline()) {
3771 if (inline_level() > MaxForceInlineLevel) INLINE_BAILOUT("MaxForceInlineLevel"); 3771 if (inline_level() > MaxForceInlineLevel ) INLINE_BAILOUT("MaxForceInlineLevel");
3772 print_inlining(callee, "force inline by annotation"); 3772 if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep");
3773 } else if (callee->should_inline()) { 3773
3774 print_inlining(callee, "force inline by CompileOracle"); 3774 const char* msg = "";
3775 if (callee->force_inline()) msg = "force inline by annotation";
3776 if (callee->should_inline()) msg = "force inline by CompileOracle";
3777 print_inlining(callee, msg);
3775 } else { 3778 } else {
3776 // use heuristic controls on inlining 3779 // use heuristic controls on inlining
3777 if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep"); 3780 if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep");
3778 if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep"); 3781 if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep");
3779 if (callee->code_size_for_inlining() > max_inline_size() ) INLINE_BAILOUT("callee is too large"); 3782 if (callee->code_size_for_inlining() > max_inline_size() ) INLINE_BAILOUT("callee is too large");