RFR 8202913: loader constraint message for fields specifies incorrect referring class
Karen Kinnear
karen.kinnear at oracle.com
Wed May 30 13:17:08 UTC 2018
Harold,
Looks good.
thanks,
Karen
> On May 30, 2018, at 9:07 AM, Harold David Seigel <harold.seigel at oracle.com> wrote:
>
> Hi Goetz,
>
> Thanks for reviewing this change!
>
> Please review this updated webrev for this bug:
>
> http://cr.openjdk.java.net/~hseigel/bug_8202913.2/webrev/index.html <http://cr.openjdk.java.net/~hseigel/bug_8202913.2/webrev/index.html>
>
> The new exception message for the included test looks like this:
>
> loader constraint violation: when resolving field "_field1" of
> type pkg.Foo, the class loader "<unnamed>" (instance of
> pkg.ClassLoaderForChildGrandFoo, child of "app"
> jdk.internal.loader.ClassLoaders$AppClassLoader) of the current
> class, pkg.Child, and the class loader "<unnamed>" (instance of
> pkg.ClassLoaderForParentFoo, child of "app"
> jdk.internal.loader.ClassLoaders$AppClassLoader) for the field's
> defining type, pkg.Parent, have different Class objects for type pkg.Foo
>
> Please also see comments in-line.
>
>
> On 5/25/2018 10:23 AM, Lindenmaier, Goetz wrote:
>> Hi,
>>
>>> I think this would read better if you replace 'type' by what is returned by
>>> Klass::external_kind().
>> correcting myself, you can just say 'class' ... interfaces don't define fields ...
> Karen pointed out that interfaces can have public static fields. So, I'll keep it as 'type', not 'class'.
>>
>> Best regards,
>> Goetz.
>>
>>
>>> -----Original Message-----
>>> From: Lindenmaier, Goetz
>>> Sent: Freitag, 25. Mai 2018 16:18
>>> To: 'Harold David Seigel' <harold.seigel at oracle.com>; hotspot-runtime-
>>> dev at openjdk.java.net
>>> Subject: RE: RFR 8202913: loader constraint message for fields specifies
>>> incorrect referring class
>>>
>>> Hi Harold,
>>>
>>> Thanks for adding this further improvement over my change.
>>>
>>>> ... AppClassLoader) for the field's
>>>> defining type, Parent, have different Class objects for type Foo
>>> I think this would read better if you replace 'type' by what is returned by
>>> Klass::external_kind().
>>>
>>> Actually I would prefer to read
>>> ... AppClassLoader) for the class|abstractclass|interface test.Parent defining
>>> this field,
>>> have different Class objects for type Foo
> The message is already too wordy. I'd prefer to not add this additional text because it is not related to the reason for the exception.
>>>
>>> Could you please add the test files into some package so that you
>>> can assure class names are printed as test.Parent and not test/Parent?
>>> There is external_name() to get the proper names from classes, I don't
>>> know for symbols.
>>> Related tests are in runtime/LoaderConstraint. Please move your test
>>> there.
> Done.
>
> Thanks, Harold
>>>
>>> Best regards,
>>> Goetz.
>>>
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: hotspot-runtime-dev [mailto:hotspot-runtime-dev-
>>>> bounces at openjdk.java.net] On Behalf Of Harold David Seigel
>>>> Sent: Freitag, 25. Mai 2018 15:29
>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>> Subject: RFR 8202913: loader constraint message for fields specifies
>>> incorrect
>>>> referring class
>>>>
>>>> Hi,
>>>>
>>>> Please review this change to correct and simplify the error message
>>>> displayed when a loader constraint check fails when trying to access a
>>>> field.
>>>>
>>>> The old message (for this test case):
>>>>
>>>> loader constraint violation: when resolving field "_field1" the
>>>> class loader "<unnamed>" (instance of ClassLoaderForChildGrandFoo,
>>>> child of "app" jdk.internal.loader.ClassLoaders$AppClassLoader) of
>>>> the referring class, Parent, and the class loader "<unnamed>"
>>>> (instance of ClassLoaderForParentFoo, child of "app"
>>>> jdk.internal.loader.ClassLoaders$AppClassLoader) for the field's
>>>> resolved type, Foo, have different Class objects for that type
>>>>
>>>> The new message:
>>>>
>>>> loader constraint violation: when resolving field "_field1" of type
>>>> Foo, the class loader "<unnamed>" (instance of
>>>> ClassLoaderForChildGrandFoo, child of "app"
>>>> jdk.internal.loader.ClassLoaders$AppClassLoader) of the current
>>>> class, Child, and the class loader "<unnamed>" (instance of
>>>> ClassLoaderForParentFoo, child of "app"
>>>> jdk.internal.loader.ClassLoaders$AppClassLoader) for the field's
>>>> defining type, Parent, have different Class objects for type Foo
>>>>
>>>> Open Webrev: http://cr.openjdk.java.net/~hseigel/bug_8202913/webrev/
>>>>
>>>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8202913
>>>>
>>>> This fix was tested with Mach5 tiers 1 and 2 tests and builds on
>>>> Linux-X64, Windows, Solaris Sparc, and Mac OS X, with tiers 3-5 tests on
>>>> Linux-x64, and with JCK-11 Lang and VM tests.
>>>>
>>>> Thanks, Harold
More information about the hotspot-runtime-dev
mailing list