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 9032 : 8137167: JEP165: Compiler Control: Implementation task
Summary: Compiler Control JEP
Reviewed-by: roland, twisti

*** 3363,3373 **** return NULL; } // negative filter: should callee NOT be inlined? returns NULL, ok to inline, or rejection msg const char* GraphBuilder::should_not_inline(ciMethod* callee) const { ! if ( callee->should_not_inline()) return "disallowed by CompileCommand"; if ( callee->dont_inline()) return "don't inline by annotation"; return NULL; } void GraphBuilder::build_graph_for_intrinsic(ciMethod* callee) { --- 3363,3373 ---- return NULL; } // negative filter: should callee NOT be inlined? returns NULL, ok to inline, or rejection msg const char* GraphBuilder::should_not_inline(ciMethod* callee) const { ! if ( compilation()->directive()->should_not_inline(callee)) return "disallowed by CompileCommand"; if ( callee->dont_inline()) return "don't inline by annotation"; return NULL; } void GraphBuilder::build_graph_for_intrinsic(ciMethod* callee) {
*** 3492,3503 **** // accesses critical VM-internal data. bool is_available = false; { VM_ENTRY_MARK; methodHandle mh(THREAD, callee->get_Method()); ! methodHandle ct(THREAD, method()->get_Method()); ! is_available = _compilation->compiler()->is_intrinsic_available(mh, ct); } if (!is_available) { if (!InlineNatives) { // Return false and also set message that the inlining of --- 3492,3502 ---- // accesses critical VM-internal data. bool is_available = false; { VM_ENTRY_MARK; methodHandle mh(THREAD, callee->get_Method()); ! is_available = _compilation->compiler()->is_intrinsic_available(mh, _compilation->directive()); } if (!is_available) { if (!InlineNatives) { // Return false and also set message that the inlining of
*** 3688,3704 **** 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 CompileCommand"; 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"); --- 3687,3704 ---- if (is_profiling() && !callee->ensure_method_data()) { INLINE_BAILOUT("mdo allocation failed"); } // now perform tests that are based on flag settings ! bool inlinee_by_directive = compilation()->directive()->should_inline(callee); ! if (callee->force_inline() || inlinee_by_directive) { 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 (inlinee_by_directive) msg = "force inline by CompileCommand"; 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");
*** 4205,4215 **** event.set_caller(method()->get_Method()); event.set_callee(callee->to_trace_struct()); event.commit(); } #endif // INCLUDE_TRACE ! if (!PrintInlining && !compilation()->method()->has_option("PrintInlining")) { return; } CompileTask::print_inlining_tty(callee, scope()->level(), bci(), msg); if (success && CIPrintMethodCodes) { callee->print_codes(); --- 4205,4216 ---- event.set_caller(method()->get_Method()); event.set_callee(callee->to_trace_struct()); event.commit(); } #endif // INCLUDE_TRACE ! ! if (!compilation()->directive()->PrintInliningOption) { return; } CompileTask::print_inlining_tty(callee, scope()->level(), bci(), msg); if (success && CIPrintMethodCodes) { callee->print_codes();
src/share/vm/c1/c1_GraphBuilder.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File