393 void Parse::do_call() { 394 // It's likely we are going to add debug info soon. 395 // Also, if we inline a guy who eventually needs debug info for this JVMS, 396 // our contribution to it is cleaned up right here. 397 kill_dead_locals(); 398 399 // Set frequently used booleans 400 const bool is_virtual = bc() == Bytecodes::_invokevirtual; 401 const bool is_virtual_or_interface = is_virtual || bc() == Bytecodes::_invokeinterface; 402 const bool has_receiver = Bytecodes::has_receiver(bc()); 403 404 // Find target being called 405 bool will_link; 406 ciSignature* declared_signature = NULL; 407 ciMethod* orig_callee = iter().get_method(will_link, &declared_signature); // callee in the bytecode 408 ciInstanceKlass* holder_klass = orig_callee->holder(); 409 ciKlass* holder = iter().get_declared_method_holder(); 410 ciInstanceKlass* klass = ciEnv::get_instance_klass_for_declared_method_holder(holder); 411 assert(declared_signature != NULL, "cannot be null"); 412 413 // uncommon-trap when callee is unloaded, uninitialized or will not link 414 // bailout when too many arguments for register representation 415 if (!will_link || can_not_compile_call_site(orig_callee, klass)) { 416 #ifndef PRODUCT 417 if (PrintOpto && (Verbose || WizardMode)) { 418 method()->print_name(); tty->print_cr(" can not compile call at bci %d to:", bci()); 419 orig_callee->print_name(); tty->cr(); 420 } 421 #endif 422 return; 423 } 424 assert(holder_klass->is_loaded(), ""); 425 //assert((bc_callee->is_static() || is_invokedynamic) == !has_receiver , "must match bc"); // XXX invokehandle (cur_bc_raw) 426 // Note: this takes into account invokeinterface of methods declared in java/lang/Object, 427 // which should be invokevirtuals but according to the VM spec may be invokeinterfaces 428 assert(holder_klass->is_interface() || holder_klass->super() == NULL || (bc() != Bytecodes::_invokeinterface), "must match bc"); 429 // Note: In the absence of miranda methods, an abstract class K can perform 430 // an invokevirtual directly on an interface method I.m if K implements I. 431 432 // orig_callee is the resolved callee which's signature includes the | 393 void Parse::do_call() { 394 // It's likely we are going to add debug info soon. 395 // Also, if we inline a guy who eventually needs debug info for this JVMS, 396 // our contribution to it is cleaned up right here. 397 kill_dead_locals(); 398 399 // Set frequently used booleans 400 const bool is_virtual = bc() == Bytecodes::_invokevirtual; 401 const bool is_virtual_or_interface = is_virtual || bc() == Bytecodes::_invokeinterface; 402 const bool has_receiver = Bytecodes::has_receiver(bc()); 403 404 // Find target being called 405 bool will_link; 406 ciSignature* declared_signature = NULL; 407 ciMethod* orig_callee = iter().get_method(will_link, &declared_signature); // callee in the bytecode 408 ciInstanceKlass* holder_klass = orig_callee->holder(); 409 ciKlass* holder = iter().get_declared_method_holder(); 410 ciInstanceKlass* klass = ciEnv::get_instance_klass_for_declared_method_holder(holder); 411 assert(declared_signature != NULL, "cannot be null"); 412 413 // Bump max node limit for JSR292 users 414 if (bc() == Bytecodes::_invokedynamic || orig_callee->is_method_handle_intrinsic()) { 415 C->set_max_node_limit(3*MaxNodeLimit); 416 } 417 418 // uncommon-trap when callee is unloaded, uninitialized or will not link 419 // bailout when too many arguments for register representation 420 if (!will_link || can_not_compile_call_site(orig_callee, klass)) { 421 #ifndef PRODUCT 422 if (PrintOpto && (Verbose || WizardMode)) { 423 method()->print_name(); tty->print_cr(" can not compile call at bci %d to:", bci()); 424 orig_callee->print_name(); tty->cr(); 425 } 426 #endif 427 return; 428 } 429 assert(holder_klass->is_loaded(), ""); 430 //assert((bc_callee->is_static() || is_invokedynamic) == !has_receiver , "must match bc"); // XXX invokehandle (cur_bc_raw) 431 // Note: this takes into account invokeinterface of methods declared in java/lang/Object, 432 // which should be invokevirtuals but according to the VM spec may be invokeinterfaces 433 assert(holder_klass->is_interface() || holder_klass->super() == NULL || (bc() != Bytecodes::_invokeinterface), "must match bc"); 434 // Note: In the absence of miranda methods, an abstract class K can perform 435 // an invokevirtual directly on an interface method I.m if K implements I. 436 437 // orig_callee is the resolved callee which's signature includes the |