mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
8218628: Add detailed message to NullPointerException describing what is null
This is the implementation of JEP 358: Helpful NullPointerExceptions. Reviewed-by: coleenp, clanger, rschmelter, rriggs, forax, mr
This commit is contained in:
parent
6147018a0f
commit
d8c6516c92
15 changed files with 3643 additions and 7 deletions
|
@ -38,6 +38,7 @@
|
|||
#include "classfile/vmSymbols.hpp"
|
||||
#include "gc/shared/collectedHeap.inline.hpp"
|
||||
#include "interpreter/bytecode.hpp"
|
||||
#include "interpreter/bytecodeUtils.hpp"
|
||||
#include "jfr/jfrEvents.hpp"
|
||||
#include "logging/log.hpp"
|
||||
#include "memory/heapShared.hpp"
|
||||
|
@ -531,13 +532,37 @@ JVM_END
|
|||
|
||||
// java.lang.Throwable //////////////////////////////////////////////////////
|
||||
|
||||
|
||||
JVM_ENTRY(void, JVM_FillInStackTrace(JNIEnv *env, jobject receiver))
|
||||
JVMWrapper("JVM_FillInStackTrace");
|
||||
Handle exception(thread, JNIHandles::resolve_non_null(receiver));
|
||||
java_lang_Throwable::fill_in_stack_trace(exception);
|
||||
JVM_END
|
||||
|
||||
// java.lang.NullPointerException ///////////////////////////////////////////
|
||||
|
||||
JVM_ENTRY(jstring, JVM_GetExtendedNPEMessage(JNIEnv *env, jthrowable throwable))
|
||||
if (!ShowCodeDetailsInExceptionMessages) return NULL;
|
||||
|
||||
oop exc = JNIHandles::resolve_non_null(throwable);
|
||||
|
||||
Method* method;
|
||||
int bci;
|
||||
if (!java_lang_Throwable::get_top_method_and_bci(exc, &method, &bci)) {
|
||||
return NULL;
|
||||
}
|
||||
if (method->is_native()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stringStream ss;
|
||||
bool ok = BytecodeUtils::get_NPE_message_at(&ss, method, bci);
|
||||
if (ok) {
|
||||
oop result = java_lang_String::create_oop_from_str(ss.base(), CHECK_0);
|
||||
return (jstring) JNIHandles::make_local(env, result);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
JVM_END
|
||||
|
||||
// java.lang.StackTraceElement //////////////////////////////////////////////
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue