Mercurial > hg > graal-compiler
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"); |