RFR: 8258061: Improve diagnostic information about errors during class redefinition

Chris Plummer cjplummer at openjdk.java.net
Thu Dec 17 05:30:00 UTC 2020


On Thu, 17 Dec 2020 00:44:18 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

> The error code during class redefinition might be not enough to easily diagnose the problem. Some more logging might be useful to understand it. I encountered this problem when redefined methods with lambda usage.
> I run all existing tests with enabled logging and sanity verified error messages.

src/hotspot/share/prims/jvmtiRedefineClasses.cpp line 1003:

> 1001:         ("redefined class %s modifiers change error: modifiers changed from %d to %d.",
> 1002:          the_class->external_name(), old_flags, new_flags);
> 1003:     return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED;

You've changed the ordering of the checks. I'm not sure why.

src/hotspot/share/prims/jvmtiRedefineClasses.cpp line 936:

> 934:        scratch_class->super()->name())) {
> 935:     log_trace(redefine, class, normalize)
> 936:       ("redefined class %s superclass change error: superclass changed from %s to %s.",

I'm not so sure I like the style of the log message wording. I would prefer something like:

     error redefining class %s: superclass changed from %s to %s.

The same comment applies to pretty much every error message below. Besides being more concise and easier to read, I don't like using "superclass change error" when there is no such formally defined error. The error is `JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED`.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1811


More information about the hotspot-dev mailing list