src/share/vm/opto/doCall.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8058148 Sdiff src/share/vm/opto

src/share/vm/opto/doCall.cpp

Print this page




 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


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