RFR: 8219810: javac throws NullPointerException
Archie L. Cobbs
duke at openjdk.org
Fri Oct 21 22:37:10 UTC 2022
JVMS 4.5 states:
> Each field of a class may have at most one of its ACC_PUBLIC, ACC_PRIVATE, and ACC_PROTECTED flags set (JLS §8.3.1), and must not have both its ACC_FINAL and ACC_VOLATILE flags set (JLS §8.3.1.4).
and JVMS 4.6 states:
> Each method of a class may have at most one of its ACC_PUBLIC, ACC_PRIVATE, and ACC_PROTECTED flags set (JLS §8.4.3).
However, when reading class files these illegal combinations are not actually checked, and this can lead to compiler crashes as in the bug example.
This patch adds checks for these illegal combinations.
-------------
Commit messages:
- Also disallow field access flags from having both FINAL and VOLATILE.
- Detect invalid access flag combinations for fields and methods in classfiles.
Changes: https://git.openjdk.org/jdk/pull/10826/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10826&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8219810
Stats: 194 lines in 9 files changed: 192 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/10826.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10826/head:pull/10826
PR: https://git.openjdk.org/jdk/pull/10826
More information about the compiler-dev
mailing list