RFR(L): 8221470: Print methods in exception messages in java-like Syntax.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Tue Mar 26 12:06:10 UTC 2019


A row of exceptions are thrown from the hotspot runtime.
They print methods with their JNI signatures. To increase
readability and resemblance to source code, this change proposes
to print them in a Java-like syntax.

Some examples:
current method printouts:


improved format:

void test.TeMe3_B.ma()
double[][] test.TeMe3_B.ma(int, boolean, byte[][], float)
test.TeMe3_B[][] test.TeMe3_B.ma(java.lang.Object[][][])

So far, Method::name_and_sig_as_C_string() is used to print
these messages.

This change implements function Method::external_name() that prints the better
external_name() is chosen according to Klass::external_name().

Printing the better format requires parsing the signature
Symbol. This is implemented in
void Symbol::print_as_signature_external_return_type(outputStream *os);
void Symbol::print_as_signature_external_parameters(outputStream *os);
These method names are chosen according to Symbol::as_class_external_name().

See this partial webrev for the new functions:

Also, I changed a lot of exception messages to use the new format.
This required to adapt a row of tests. I added a test to check
the signature printing does not regress.  For all these changes, see
the full webrev:

I hope I detected all places where method signatures are printed to
exception messages.

Best regards,

More information about the hotspot-runtime-dev mailing list