--- old/src/share/vm/opto/doCall.cpp 2016-10-13 14:39:42.750411825 +0200 +++ new/src/share/vm/opto/doCall.cpp 2016-10-13 14:39:42.626411829 +0200 @@ -63,7 +63,7 @@ } CallGenerator* Compile::call_generator(ciMethod* callee, int vtable_index, bool call_does_dispatch, - JVMState* jvms, bool allow_inline, + JVMState* jvms, bool allow_inline, bool is_mh_inline, float prof_factor, ciKlass* speculative_receiver_type, bool allow_intrinsics, bool delayed_forbidden) { ciMethod* caller = jvms->method(); @@ -122,7 +122,7 @@ if (cg->is_predicated()) { // Code without intrinsic but, hopefully, inlined. CallGenerator* inline_cg = this->call_generator(callee, - vtable_index, call_does_dispatch, jvms, allow_inline, prof_factor, speculative_receiver_type, false); + vtable_index, call_does_dispatch, jvms, allow_inline, false /* is_mh_inline */, prof_factor, speculative_receiver_type, false); if (inline_cg != NULL) { cg = CallGenerator::for_predicated_intrinsic(cg, inline_cg); } @@ -168,7 +168,7 @@ InlineTree* ilt = InlineTree::find_subtree_from_root(this->ilt(), jvms->caller(), jvms->method()); WarmCallInfo scratch_ci; bool should_delay = false; - WarmCallInfo* ci = ilt->ok_to_inline(callee, jvms, profile, &scratch_ci, should_delay); + WarmCallInfo* ci = ilt->ok_to_inline(callee, jvms, profile, &scratch_ci, should_delay, is_mh_inline); assert(ci != &scratch_ci, "do not let this pointer escape"); bool allow_inline = (ci != NULL && !ci->is_cold()); bool require_inline = (allow_inline && ci->is_hot()); @@ -195,7 +195,7 @@ } else if (require_inline || !InlineWarmCalls) { return cg; } else { - CallGenerator* cold_cg = call_generator(callee, vtable_index, call_does_dispatch, jvms, false, prof_factor); + CallGenerator* cold_cg = call_generator(callee, vtable_index, call_does_dispatch, jvms, false /* is_mh_inline */, is_mh_inline, prof_factor); return CallGenerator::for_warm_call(ci, cold_cg, cg); } } @@ -238,7 +238,7 @@ if (receiver_method != NULL) { // The single majority receiver sufficiently outweighs the minority. CallGenerator* hit_cg = this->call_generator(receiver_method, - vtable_index, !call_does_dispatch, jvms, allow_inline, prof_factor); + vtable_index, !call_does_dispatch, jvms, allow_inline, false /* is_mh_inline */, prof_factor); if (hit_cg != NULL) { // Look up second receiver. CallGenerator* next_hit_cg = NULL; @@ -249,7 +249,7 @@ if (next_receiver_method != NULL) { next_hit_cg = this->call_generator(next_receiver_method, vtable_index, !call_does_dispatch, jvms, - allow_inline, prof_factor); + allow_inline, false /* is_mh_inline */, prof_factor); if (next_hit_cg != NULL && !next_hit_cg->is_inline() && have_major_receiver && UseOnlyInlinedBimorphic) { // Skip if we can't inline second receiver's method @@ -600,7 +600,7 @@ // Decide call tactic. // This call checks with CHA, the interpreter profile, intrinsics table, etc. // It decides whether inlining is desirable or not. - CallGenerator* cg = C->call_generator(callee, vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), speculative_receiver_type); + CallGenerator* cg = C->call_generator(callee, vtable_index, call_does_dispatch, jvms, try_inline, false /* is_mh_inline */, prof_factor(), speculative_receiver_type); // NOTE: Don't use orig_callee and callee after this point! Use cg->method() instead. orig_callee = callee = NULL; @@ -651,7 +651,7 @@ // the call site, perhaps because it did not match a pattern the // intrinsic was expecting to optimize. Should always be possible to // get a normal java call that may inline in that case - cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), speculative_receiver_type, /* allow_intrinsics= */ false); + cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, false /* is_mh_inline */, prof_factor(), speculative_receiver_type, /* allow_intrinsics= */ false); new_jvms = cg->generate(jvms); if (new_jvms == NULL) { guarantee(failing(), "call failed to generate: calls should work");