On Thu, 12 Mar 2026 20:50:55 GMT, Chen Liang <[email protected]> wrote:

>> 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.
>
> Chen Liang has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Another missed site

In the development of this patch, I noticed `Class.getModifiers` is now 
returning `ACC_SUPER` bit when preview is off. This deviates from mainline 
behavior and I tentatively changed VM handling of that. I think I want to hold 
off integration until we reach a conclusion on how this bit should be 
represented without preview. (I included this change because this behavioral 
deviation was causing test failures in java/lang/reflect/AccessFlag tests)

I also restored vmTestbase/nsk/jdi/Accessible/modifiers/modifiers001.java back 
to mainline for the `getModifiers` behavioral change; otherwise tier 1-5 is 
clear. This test is already problemlisted for --enable-preview so I will leave 
fixing preview testing to serviceability.

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

PR Comment: https://git.openjdk.org/valhalla/pull/2209#issuecomment-4050156476

Reply via email to