< prev index next >
src/hotspot/share/interpreter/bytecodeUtils.cpp
Print this page
rev 59841 : 8248476: No helpful NullPointerException message after calling fillInStackTrace
Summary: reported by christoph.dreis@freenet.de
Reviewed-by:
*** 1150,1160 ****
Symbol* name = cp->symbol_at(name_index);
// Assume the the call of a constructor can never cause a NullPointerException
// (which is true in Java). This is mainly used to avoid generating wrong
// messages for NullPointerExceptions created explicitly by new in Java code.
! if (name != vmSymbols::object_initializer_name()) {
int type_index = cp->signature_ref_index_at(name_and_type_index);
Symbol* signature = cp->symbol_at(type_index);
// The 'this' parameter was null. Return the slot of it.
return ArgumentSizeComputer(signature).size();
} else {
--- 1150,1164 ----
Symbol* name = cp->symbol_at(name_index);
// Assume the the call of a constructor can never cause a NullPointerException
// (which is true in Java). This is mainly used to avoid generating wrong
// messages for NullPointerExceptions created explicitly by new in Java code.
! //
! // Also, if the stack trace was filled by a user call, we don't print
! // the message as it will print the code details where the stack trace
! // was filled in, not the ones where the NPE was thrown.
! if (name != vmSymbols::object_initializer_name() && name != vmSymbols::fillInStackTrace_name()) {
int type_index = cp->signature_ref_index_at(name_and_type_index);
Symbol* signature = cp->symbol_at(type_index);
// The 'this' parameter was null. Return the slot of it.
return ArgumentSizeComputer(signature).size();
} else {
< prev index next >