Some AccessFlag parsing methods throw IAE because a flag mask is not valid in a 
location. However, there is no easy way to check what flag mask bits or what 
flags are valid for a location. We need such APIs to check, specific to each 
class file format version.

Also in the investigation, it's noted that `ACC_SYNTHETIC` is incorrectly 
represented - it is available since release 5.0 instead of release 7. This bug 
is fixed together for implementation simplicity.

The new methods are all in `AccessFlag.Location`:
- `Set<AccessFlag> flags()`
- `int flagsMask()`
- `Set<AccessFlag> flags(ClassFileFormatVersion)`
- `int flagsMask(ClassFileFormatVersion)`

Also there is some simplification to `AccessFlag` itself to remove the 
anonymous classes, which should be more startup-friendly.

Testing: Tier 1-3

-------------

Commit messages:
 - ClassLoading order, Typos in NPE test
 - 8347471: Provide valid flags and mask in AccessFlag.Location

Changes: https://git.openjdk.org/jdk/pull/23095/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23095&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8347471
  Stats: 548 lines in 7 files changed: 282 ins; 137 del; 129 mod
  Patch: https://git.openjdk.org/jdk/pull/23095.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23095/head:pull/23095

PR: https://git.openjdk.org/jdk/pull/23095

Reply via email to