101 if (receiver_count >= 0) { |
101 if (receiver_count >= 0) { |
102 log->print(" receiver='%d' receiver_count='%d'", rid, receiver_count); |
102 log->print(" receiver='%d' receiver_count='%d'", rid, receiver_count); |
103 if (profile.has_receiver(1)) { |
103 if (profile.has_receiver(1)) { |
104 log->print(" receiver2='%d' receiver2_count='%d'", r2id, profile.receiver_count(1)); |
104 log->print(" receiver2='%d' receiver2_count='%d'", r2id, profile.receiver_count(1)); |
105 } |
105 } |
|
106 } |
|
107 if (callee->is_method_handle_intrinsic()) { |
|
108 log->print(" method_handle_intrinsic='1'"); |
106 } |
109 } |
107 log->end_elem(); |
110 log->end_elem(); |
108 } |
111 } |
109 |
112 |
110 // Special case the handling of certain common, profitable library |
113 // Special case the handling of certain common, profitable library |
294 // There was no special inlining tactic, or it bailed out. |
297 // There was no special inlining tactic, or it bailed out. |
295 // Use a more generic tactic, like a simple call. |
298 // Use a more generic tactic, like a simple call. |
296 if (call_does_dispatch) { |
299 if (call_does_dispatch) { |
297 const char* msg = "virtual call"; |
300 const char* msg = "virtual call"; |
298 if (PrintInlining) print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg); |
301 if (PrintInlining) print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg); |
|
302 C->log_inline_failure(msg); |
299 return CallGenerator::for_virtual_call(callee, vtable_index); |
303 return CallGenerator::for_virtual_call(callee, vtable_index); |
300 } else { |
304 } else { |
301 // Class Hierarchy Analysis or Type Profile reveals a unique target, |
305 // Class Hierarchy Analysis or Type Profile reveals a unique target, |
302 // or it is a static or special call. |
306 // or it is a static or special call. |
303 return CallGenerator::for_direct_call(callee, should_delay_inlining(callee, jvms)); |
307 return CallGenerator::for_direct_call(callee, should_delay_inlining(callee, jvms)); |