RFR: 8256867: Classes with empty PermittedSubclasses attribute cannot be extended
Harold Seigel
hseigel at openjdk.java.net
Mon Dec 7 19:56:20 UTC 2020
Please review this fix for JDK-8256867. This change no longer throws a ClassFormatError exception when loading a class whose PermittedSubclasses attribute is empty (contains no classes). Instead, the class is treated as a sealed class which cannot be extended nor implemented. This new behavior conforms to the JVM Spec.
This change required changing Class.permittedSubclasses() to return an empty array for classes with empty PermittedSubclasses attributes, and to return null for non-sealed classes.
This fix was tested with Mach5 tiers 1-2 on Linux, MacOS, and Windows, and tiers 3-5 on Linux x64.
Thanks, Harold
-------------
Commit messages:
- 8256867: Classes with empty PermittedSubclasses attribute cannot be extended
Changes: https://git.openjdk.java.net/jdk/pull/1675/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1675&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8256867
Stats: 156 lines in 8 files changed: 100 ins; 13 del; 43 mod
Patch: https://git.openjdk.java.net/jdk/pull/1675.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1675/head:pull/1675
PR: https://git.openjdk.java.net/jdk/pull/1675
More information about the compiler-dev
mailing list