Integrated: 8268720: Unspecified checks on NameAndType constants should not be performed
Harold Seigel
hseigel at openjdk.java.net
Wed Jun 23 12:15:38 UTC 2021
On Tue, 15 Jun 2021 20:17:32 GMT, Harold Seigel <hseigel at openjdk.org> wrote:
> Please review this small fix for JDK-8268720. The fix changes the JVM to no longer throw a ClassFormatError exception for a constant pool NameAndType that has a name and descriptor that are both valid, but are incompatible together, such as "<init>()D".
>
> Note that if the CONSTANT_NameAndType_info for a CONSTANT_Methodref_info contained the name "<init>"and descriptor such as "()D" then a ClassFormatError exception would get thrown because the CONSTANT_Methodref_info would be invalid. JVM Spec section 4.4.2 says:
>
> If the name of the method in a CONSTANT_Methodref_info structure begins with a '<' ('\u003c'), then the name must be the special name <init>, representing an instance initialization method (§2.9.1). The return type of such a method must be void.
>
> The fix was tested with Mach5 tiers 1 and 2 on Linux, Mac OS, and Windows, Mach5 tiers 3-5 on Linux x64, and JCK Lang and VM tests on Linux x64.
>
> Thanks, Harold
This pull request has now been integrated.
Changeset: f2e690e0
Author: Harold Seigel <hseigel at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/f2e690e0ee503794cb50740170912697640d70ff
Stats: 478 lines in 4 files changed: 447 ins; 15 del; 16 mod
8268720: Unspecified checks on NameAndType constants should not be performed
Reviewed-by: dholmes, lfoltan
-------------
PR: https://git.openjdk.java.net/jdk/pull/4497
More information about the hotspot-runtime-dev
mailing list