RFR: 8260009: InstanceKlass::has_as_permitted_subclass() fails if subclass was redefined
David Holmes
dholmes at openjdk.java.net
Thu Jan 21 22:19:05 UTC 2021
On Thu, 21 Jan 2021 13:41:44 GMT, Harold Seigel <hseigel at openjdk.org> wrote:
> Please review this fix for JDK-8260009. The fix removes the "if (k2 == k)" check for a valid permitted subclass because the check does not work if "k" is being redefined. It fails because 'k' is a temporary InstanceKlass created when loading the redefined class.
>
> Instead, the code relies on a name check to determine if 'k' is a permitted subclass.
>
> The fix was tested with Mach5 tiers 1-2 on Linux, Mac OS, and Windows, tiers 3-5 on Linux x64, and JCK Lang and VM tests.
>
> Thanks, Harold
Hi Harold,
This makes me wonder whether we can have a similar issue with nestmate checking?
Just curious: is there any way to determine that a Klass k2 is actually a redefinition of Klass k1? I
One nit below, otherwise this seems fine.
Thanks,
David
src/hotspot/share/oops/instanceKlass.cpp line 255:
> 253: // Do not check for a resolved cp entry, because that check can fail if
> 254: // the class is being redefined. Just do a name check.
> 255: // We don't want to resolve any class other than the one being checked.
You don't resolve any classes at all now so this comment can go.
-------------
Marked as reviewed by dholmes (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/2184
More information about the hotspot-dev
mailing list