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