Currently, the preview access flag enum constants are made available with a 
ClassFileFormatVersion.CURRENT_PREVIEW_FEATURES constant. Such a constant is 
questionable design.

We can have an approach to model preview access flags without such a constant, 
losing the ability for users to inspect through `ClassFileFormatVersion`, but 
otherwise keeping these interfaces intact:

1. `accessFlags()` factory methods in core reflection
2. Inspection of AccessFlag through ClassFile API
3. The outputs of javap

The new design makes use of a new internal API, 
`jdk.internal.reflect.PreviewAccessFlags`. It replaces the AccessFlag APIs that 
previously took `ClassFileFormatVersion.CURRENT_PREVIEW_FEATURES`. This 
introduces a new qualified export from `java.base/jdk.internal.reflect` to 
`jdk.jdeps` for Javap usage.

In addition, with the recent awareness that core reflection/HotSpot only has 
one unique representation of modifiers, we can remove some contrived 
representation of access flags present in mainline (that required pulling class 
version from Class mirrors) and migrate to our simplified system that decodes 
the uniform representation used by hotspot.

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

Commit messages:
 - Bugs and redundant diffs
 - Silly test
 - Remove PREVIEW class file format version and rewire stuff

Changes: https://git.openjdk.org/valhalla/pull/2209/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2209&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8379559
  Stats: 266 lines in 20 files changed: 148 ins; 83 del; 35 mod
  Patch: https://git.openjdk.org/valhalla/pull/2209.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2209/head:pull/2209

PR: https://git.openjdk.org/valhalla/pull/2209

Reply via email to