src/hotspot/share/interpreter/interpreterRuntime.cpp
changeset 49368 2ed1c37df3a5
parent 49359 59f6547e151f
child 49449 ef5d5d343e2a
equal deleted inserted replaced
49366:f95ef5511e1f 49368:2ed1c37df3a5
   485     // tracing
   485     // tracing
   486     if (log_is_enabled(Info, exceptions)) {
   486     if (log_is_enabled(Info, exceptions)) {
   487       ResourceMark rm(thread);
   487       ResourceMark rm(thread);
   488       stringStream tempst;
   488       stringStream tempst;
   489       tempst.print("interpreter method <%s>\n"
   489       tempst.print("interpreter method <%s>\n"
   490                    " at bci %d for thread " INTPTR_FORMAT,
   490                    " at bci %d for thread " INTPTR_FORMAT " (%s)",
   491                    h_method->print_value_string(), current_bci, p2i(thread));
   491                    h_method->print_value_string(), current_bci, p2i(thread), thread->name());
   492       Exceptions::log_exception(h_exception, tempst);
   492       Exceptions::log_exception(h_exception, tempst);
   493     }
   493     }
   494 // Don't go paging in something which won't be used.
   494 // Don't go paging in something which won't be used.
   495 //     else if (extable->length() == 0) {
   495 //     else if (extable->length() == 0) {
   496 //       // disabled for now - interpreter is not using shortcut yet
   496 //       // disabled for now - interpreter is not using shortcut yet
   580 
   580 
   581 IRT_ENTRY(void, InterpreterRuntime::throw_AbstractMethodError(JavaThread* thread))
   581 IRT_ENTRY(void, InterpreterRuntime::throw_AbstractMethodError(JavaThread* thread))
   582   THROW(vmSymbols::java_lang_AbstractMethodError());
   582   THROW(vmSymbols::java_lang_AbstractMethodError());
   583 IRT_END
   583 IRT_END
   584 
   584 
       
   585 // This method is called from the "abstract_entry" of the interpreter.
       
   586 // At that point, the arguments have already been removed from the stack
       
   587 // and therefore we don't have the receiver object at our fingertips. (Though,
       
   588 // on some platforms the receiver still resides in a register...). Thus,
       
   589 // we have no choice but print an error message not containing the receiver
       
   590 // type.
       
   591 IRT_ENTRY(void, InterpreterRuntime::throw_AbstractMethodErrorWithMethod(JavaThread* thread,
       
   592                                                                         Method* missingMethod))
       
   593   ResourceMark rm(thread);
       
   594   assert(missingMethod != NULL, "sanity");
       
   595   methodHandle m(thread, missingMethod);
       
   596   LinkResolver::throw_abstract_method_error(m, THREAD);
       
   597 IRT_END
       
   598 
       
   599 IRT_ENTRY(void, InterpreterRuntime::throw_AbstractMethodErrorVerbose(JavaThread* thread,
       
   600                                                                      Klass* recvKlass,
       
   601                                                                      Method* missingMethod))
       
   602   ResourceMark rm(thread);
       
   603   methodHandle mh = methodHandle(thread, missingMethod);
       
   604   LinkResolver::throw_abstract_method_error(mh, recvKlass, THREAD);
       
   605 IRT_END
       
   606 
   585 
   607 
   586 IRT_ENTRY(void, InterpreterRuntime::throw_IncompatibleClassChangeError(JavaThread* thread))
   608 IRT_ENTRY(void, InterpreterRuntime::throw_IncompatibleClassChangeError(JavaThread* thread))
   587   THROW(vmSymbols::java_lang_IncompatibleClassChangeError());
   609   THROW(vmSymbols::java_lang_IncompatibleClassChangeError());
   588 IRT_END
   610 IRT_END
   589 
   611 
       
   612 IRT_ENTRY(void, InterpreterRuntime::throw_IncompatibleClassChangeErrorVerbose(JavaThread* thread,
       
   613                                                                               Klass* recvKlass,
       
   614                                                                               Klass* interfaceKlass))
       
   615   ResourceMark rm(thread);
       
   616   char buf[1000];
       
   617   buf[0] = '\0';
       
   618   jio_snprintf(buf, sizeof(buf),
       
   619                "Class %s does not implement the requested interface %s",
       
   620                recvKlass ? recvKlass->external_name() : "NULL",
       
   621                interfaceKlass ? interfaceKlass->external_name() : "NULL");
       
   622   THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
       
   623 IRT_END
   590 
   624 
   591 //------------------------------------------------------------------------------------------------------------------------
   625 //------------------------------------------------------------------------------------------------------------------------
   592 // Fields
   626 // Fields
   593 //
   627 //
   594 
   628