463 int index = iter.get_index_u2_cpcache();
464 if (!caller_method->is_klass_loaded(index, true)) {
465 return false;
466 }
467 // Try to do constant pool resolution if running Xcomp
468 if( !caller_method->check_call(index, call_bc == Bytecodes::_invokestatic) ) {
469 return false;
470 }
471 }
472 }
473 return true;
474 }
475
476 //------------------------------check_can_parse--------------------------------
477 const char* InlineTree::check_can_parse(ciMethod* callee) {
478 // Certain methods cannot be parsed at all:
479 if ( callee->is_native()) return "native method";
480 if ( callee->is_abstract()) return "abstract method";
481 if (!callee->has_balanced_monitors()) return "not compilable (unbalanced monitors)";
482 if ( callee->get_flow_analysis()->failing()) return "not compilable (flow analysis failed)";
483 return NULL;
484 }
485
486 //------------------------------print_inlining---------------------------------
487 void InlineTree::print_inlining(ciMethod* callee_method, int caller_bci,
488 ciMethod* caller_method, bool success) const {
489 const char* inline_msg = msg();
490 assert(inline_msg != NULL, "just checking");
491 if (C->log() != NULL) {
492 if (success) {
493 C->log()->inline_success(inline_msg);
494 } else {
495 C->log()->inline_fail(inline_msg);
496 }
497 }
498 CompileTask::print_inlining_ul(callee_method, inline_level(),
499 caller_bci, inline_msg);
500 if (C->print_inlining()) {
501 C->print_inlining(callee_method, inline_level(), caller_bci, inline_msg);
502 if (callee_method == NULL) tty->print(" callee not monotonic or profiled");
|
463 int index = iter.get_index_u2_cpcache();
464 if (!caller_method->is_klass_loaded(index, true)) {
465 return false;
466 }
467 // Try to do constant pool resolution if running Xcomp
468 if( !caller_method->check_call(index, call_bc == Bytecodes::_invokestatic) ) {
469 return false;
470 }
471 }
472 }
473 return true;
474 }
475
476 //------------------------------check_can_parse--------------------------------
477 const char* InlineTree::check_can_parse(ciMethod* callee) {
478 // Certain methods cannot be parsed at all:
479 if ( callee->is_native()) return "native method";
480 if ( callee->is_abstract()) return "abstract method";
481 if (!callee->has_balanced_monitors()) return "not compilable (unbalanced monitors)";
482 if ( callee->get_flow_analysis()->failing()) return "not compilable (flow analysis failed)";
483 if (!callee->can_be_parsed()) return "cannot be parsed";
484 return NULL;
485 }
486
487 //------------------------------print_inlining---------------------------------
488 void InlineTree::print_inlining(ciMethod* callee_method, int caller_bci,
489 ciMethod* caller_method, bool success) const {
490 const char* inline_msg = msg();
491 assert(inline_msg != NULL, "just checking");
492 if (C->log() != NULL) {
493 if (success) {
494 C->log()->inline_success(inline_msg);
495 } else {
496 C->log()->inline_fail(inline_msg);
497 }
498 }
499 CompileTask::print_inlining_ul(callee_method, inline_level(),
500 caller_bci, inline_msg);
501 if (C->print_inlining()) {
502 C->print_inlining(callee_method, inline_level(), caller_bci, inline_msg);
503 if (callee_method == NULL) tty->print(" callee not monotonic or profiled");
|