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 |