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

src/share/vm/opto/callGenerator.cpp

Print this page

        

*** 823,836 **** Node* receiver = kit.argument(0); if (receiver->Opcode() == Op_ConP) { input_not_const = false; const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr(); 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"); 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); --- 823,838 ---- Node* receiver = kit.argument(0); if (receiver->Opcode() == Op_ConP) { input_not_const = false; const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr(); ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget(); const int vtable_index = Method::invalid_vtable_index; ! CallGenerator* cg = C->call_generator(target, vtable_index, ! false /* call_does_dispatch */, ! jvms, ! true /* allow_inline */, ! PROB_ALWAYS); 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);
*** 896,912 **** // arguments for a corner case that doesn't apply here (see // Parse::do_call()) target = C->optimize_virtual_call(caller, jvms->bci(), klass, klass, target, receiver_type, is_virtual, call_does_dispatch, vtable_index, // out-parameters ! /*check_access=*/false); // We lack profiling at this call but type speculation may // provide us with a type speculative_receiver_type = (receiver_type != NULL) ? receiver_type->speculative_type() : NULL; } ! CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, /*allow_inline=*/true, PROB_ALWAYS, speculative_receiver_type, true, true); ! assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); return cg; } else { const char* msg = "member_name not constant"; if (PrintInlining) C->print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg); C->log_inline_failure(msg); --- 898,916 ---- // arguments for a corner case that doesn't apply here (see // Parse::do_call()) target = C->optimize_virtual_call(caller, jvms->bci(), klass, klass, target, receiver_type, is_virtual, call_does_dispatch, vtable_index, // out-parameters ! false /* check_access */); // We lack profiling at this call but type speculation may // provide us with a type speculative_receiver_type = (receiver_type != NULL) ? receiver_type->speculative_type() : NULL; } ! CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, ! true /* allow_inline */, ! PROB_ALWAYS, ! speculative_receiver_type); return cg; } else { const char* msg = "member_name 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