src/share/vm/c1/c1_GraphBuilder.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/c1/c1_GraphBuilder.cpp Fri Oct 2 15:58:55 2015
--- new/src/share/vm/c1/c1_GraphBuilder.cpp Fri Oct 2 15:58:55 2015
*** 3363,3373 ****
--- 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 ( 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 ****
--- 3492,3502 ----
// 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);
! 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 ****
--- 3687,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()) {
+ 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 (callee->should_inline()) msg = "force inline by CompileCommand";
! 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 ****
--- 4205,4216 ----
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")) {
+
+ 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