src/share/vm/opto/callGenerator.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/callGenerator.cpp	Thu Feb  4 19:31:45 2016
--- new/src/share/vm/opto/callGenerator.cpp	Thu Feb  4 19:31:45 2016

*** 827,837 **** --- 827,842 ---- ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget(); guarantee(!target->is_method_handle_intrinsic(), "should not happen"); // XXX remove const int vtable_index = Method::invalid_vtable_index; CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS, NULL, true, true); assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); + // Don't replace MH::invokeBasic adapter call with a direct call for non-inlined case. + // It doesn't play well with LambdaForm customization. Unless the target LambdaForm + // has been already customized, an updated version won't be called until recompilation. + if (cg != NULL && cg->is_inline()) { return cg; + } } else { const char* msg = "receiver not constant"; if (PrintInlining) C->print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg); C->log_inline_failure(msg); }

src/share/vm/opto/callGenerator.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File