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

David Holmes david.holmes at oracle.com
Tue Apr 2 00:33:28 UTC 2019


Hi Goetz,

Overall this looks good to me - a few minor nits/comments below.

I've applied the patch and am running it through our internal build and 
test system (tiers 1-3 initially).

I have a suspicion there will be other tests that need to be updated - 
possibly even JCK tests. Discovering those a-priori will be difficult 
(simply running all the tests would take an extremely long time). Will 
have a discussion about how best to handle those internally.

---

src/hotspot/share/oops/method.cpp

Please put a blank line after each new method.

---

src/hotspot/share/oops/symbol.cpp

+       os->print(".");
+     } else {
+       os->print("%c", start[i]);

Please use os->put(char c) for individual characters.

--

The "start" name would seem better as "buf" to me.

--

+     } else if (start[i] == 'L') {
+       print_class(os, start+i+1, len-i-2);

Can you insert a comment that help explains the -2:

      } else if (start[i] == 'L') {
+      // Expected format: L<type name>;
        print_class(os, start+i+1, len-i-2);

--

+   for(SignatureStream ss(this); !ss.is_done(); ss.next()) {

space after for (2 occurrences)

---

 
test/hotspot/jtreg/runtime/exceptionMsgs/methodPrinting/TestPrintingMethods.java

Not sure the special characters can be used directly in the sources. Can 
they not be put in as unicode escapes at all places?

---

Thanks,
David
-------


On 1/04/2019 12:32 pm, David Holmes wrote:
> Hi Goetz,
> 
> I'm looking at this ...
> 
> On 29/03/2019 8:26 pm, Lindenmaier, Goetz wrote:
>> Hi,
>>
>> Any interest in this change?
> 
> I'm personally of two minds here because these VM generated exceptions 
> are not only delivered to Java source code. I'd like to know how other 
> language developers using the JVM runtime would view this.
> 
> That aside if you're going to make a change like this then I think the 
> full signature string has to be quoted in some way to delineate it 
> within the larger message.
> 
>> Should I split it to adapt the exceptions separately one-by-one to
>> make the change smaller and simplify the review?
> 
> I don't think that is necessary.
> 
> Thanks,
> David
> -----
> 
>> I would propose to start out with AbstractMethodError only.
>>
>> Best regards,
>>    Goetz.
>>
>>
>>
>> From: Lindenmaier, Goetz
>> Sent: Tuesday, March 26, 2019 1:06 PM
>> To: hotspot-runtime-dev at openjdk.java.net
>> Subject: RFR(L): 8221470: Print methods in exception messages in 
>> java-like Syntax.
>>
>> Hi,
>>
>> 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:
>>
>> test.TeMe3_B.ma()V
>> test.TeMe3_B.ma(IZ[[BF)[[D
>> test.TeMe3_B.ma([[[Ljava/lang/Object;)[[Ltest/TeMe3_B;
>>
>> 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
>> format.
>> 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:
>> http://cr.openjdk.java.net/~goetz/wr19/8221470-exMsg-signature/01-new_methods/ 
>>
>>
>> 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:
>> http://cr.openjdk.java.net/~goetz/wr19/8221470-exMsg-signature/01/
>>
>> I hope I detected all places where method signatures are printed to
>> exception messages.
>>
>> Best regards,
>>    Goetz.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>


More information about the hotspot-runtime-dev mailing list