src/share/vm/c1/c1_GraphBuilder.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/c1/c1_GraphBuilder.cpp

src/share/vm/c1/c1_GraphBuilder.cpp

Print this page
rev 5703 : 8035887: VM crashes trying to force inlining the recursive call
Reviewed-by: ?

*** 3765,3779 **** if (is_profiling() && !callee->ensure_method_data()) { INLINE_BAILOUT("mdo allocation failed"); } // 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"); } else { // use heuristic controls on inlining if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep"); if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep"); if (callee->code_size_for_inlining() > max_inline_size() ) INLINE_BAILOUT("callee is too large"); --- 3765,3782 ---- if (is_profiling() && !callee->ensure_method_data()) { INLINE_BAILOUT("mdo allocation failed"); } // now perform tests that are based on flag settings ! if (callee->force_inline() || callee->should_inline()) { ! if (inline_level() > MaxForceInlineLevel ) INLINE_BAILOUT("MaxForceInlineLevel"); ! if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep"); ! ! 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 { // use heuristic controls on inlining if (inline_level() > MaxInlineLevel ) INLINE_BAILOUT("inlining too deep"); if (recursive_inline_level(callee) > MaxRecursiveInlineLevel) INLINE_BAILOUT("recursive inlining too deep"); if (callee->code_size_for_inlining() > max_inline_size() ) INLINE_BAILOUT("callee is too large");
src/share/vm/c1/c1_GraphBuilder.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File