hotspot/src/share/vm/oops/method.cpp
changeset 15479 e3c00ec80145
parent 15110 b09370d81054
child 15481 63b99e56827f
equal deleted inserted replaced
15478:6e6f37256157 15479:e3c00ec80145
   697   address* signature_handler =  signature_handler_addr();
   697   address* signature_handler =  signature_handler_addr();
   698   *signature_handler = handler;
   698   *signature_handler = handler;
   699 }
   699 }
   700 
   700 
   701 
   701 
   702 void Method::print_made_not_compilable(int comp_level, bool is_osr, bool report) {
   702 void Method::print_made_not_compilable(int comp_level, bool is_osr, bool report, const char* reason) {
   703   if (PrintCompilation && report) {
   703   if (PrintCompilation && report) {
   704     ttyLocker ttyl;
   704     ttyLocker ttyl;
   705     tty->print("made not %scompilable on ", is_osr ? "OSR " : "");
   705     tty->print("made not %scompilable on ", is_osr ? "OSR " : "");
   706     if (comp_level == CompLevel_all) {
   706     if (comp_level == CompLevel_all) {
   707       tty->print("all levels ");
   707       tty->print("all levels ");
   711         tty->print("%d ", i);
   711         tty->print("%d ", i);
   712       }
   712       }
   713     }
   713     }
   714     this->print_short_name(tty);
   714     this->print_short_name(tty);
   715     int size = this->code_size();
   715     int size = this->code_size();
   716     if (size > 0)
   716     if (size > 0) {
   717       tty->print(" (%d bytes)", size);
   717       tty->print(" (%d bytes)", size);
       
   718     }
       
   719     if (reason != NULL) {
       
   720       tty->print("   %s", reason);
       
   721     }
   718     tty->cr();
   722     tty->cr();
   719   }
   723   }
   720   if ((TraceDeoptimization || LogCompilation) && (xtty != NULL)) {
   724   if ((TraceDeoptimization || LogCompilation) && (xtty != NULL)) {
   721     ttyLocker ttyl;
   725     ttyLocker ttyl;
   722     xtty->begin_elem("make_not_%scompilable thread='" UINTX_FORMAT "'",
   726     xtty->begin_elem("make_not_%scompilable thread='" UINTX_FORMAT "'",
   723                      is_osr ? "osr_" : "", os::current_thread_id());
   727                      is_osr ? "osr_" : "", os::current_thread_id());
       
   728     if (reason != NULL) {
       
   729       xtty->print(" reason=\'%s\'", reason);
       
   730     }
   724     xtty->method(this);
   731     xtty->method(this);
   725     xtty->stamp();
   732     xtty->stamp();
   726     xtty->end_elem();
   733     xtty->end_elem();
   727   }
   734   }
   728 }
   735 }
   740     return is_not_c2_compilable();
   747     return is_not_c2_compilable();
   741   return false;
   748   return false;
   742 }
   749 }
   743 
   750 
   744 // call this when compiler finds that this method is not compilable
   751 // call this when compiler finds that this method is not compilable
   745 void Method::set_not_compilable(int comp_level, bool report) {
   752 void Method::set_not_compilable(int comp_level, bool report, const char* reason) {
   746   print_made_not_compilable(comp_level, /*is_osr*/ false, report);
   753   print_made_not_compilable(comp_level, /*is_osr*/ false, report, reason);
   747   if (comp_level == CompLevel_all) {
   754   if (comp_level == CompLevel_all) {
   748     set_not_c1_compilable();
   755     set_not_c1_compilable();
   749     set_not_c2_compilable();
   756     set_not_c2_compilable();
   750   } else {
   757   } else {
   751     if (is_c1_compile(comp_level))
   758     if (is_c1_compile(comp_level))
   766   if (is_c2_compile(comp_level))
   773   if (is_c2_compile(comp_level))
   767     return is_not_c2_osr_compilable();
   774     return is_not_c2_osr_compilable();
   768   return false;
   775   return false;
   769 }
   776 }
   770 
   777 
   771 void Method::set_not_osr_compilable(int comp_level, bool report) {
   778 void Method::set_not_osr_compilable(int comp_level, bool report, const char* reason) {
   772   print_made_not_compilable(comp_level, /*is_osr*/ true, report);
   779   print_made_not_compilable(comp_level, /*is_osr*/ true, report, reason);
   773   if (comp_level == CompLevel_all) {
   780   if (comp_level == CompLevel_all) {
   774     set_not_c1_osr_compilable();
   781     set_not_c1_osr_compilable();
   775     set_not_c2_osr_compilable();
   782     set_not_c2_osr_compilable();
   776   } else {
   783   } else {
   777     if (is_c1_compile(comp_level))
   784     if (is_c1_compile(comp_level))