Hi everyone,

`AccessFlags::print_on` is used for class, field and method printing, but those 
entities do not share the same modifier set. The current helper hard-codes a 
single mixed list of access flags for all 3 and is thus unaware of the type of 
the printed value. Instead of using a single shared printing function, we 
should move the printing to the relevant class, field, and method call sites. 
This makes the printer aware of the type it is printing and lets us check only 
the flags that are relevant for that type.

For this change, I remove `AccessFlags::print_on` and split the printing into 3 
separate helpers:
- `InstanceKlass::print_class_flags`
- `Method::print_access_flags`
- `fieldDescriptor::print_access_flags`

As a part of that, I added the missing `AccessFlags` predicates used by each of 
the new printers, and updated each printer to check all the flags relevant for 
its type, as defined by `jvm_constants.h`. This lets us cover class-specific, 
method-specific, and field-specific modifiers that were not handled before.

I also added new gtests covering each of the 3 printing helpers and the 
previously missing flags.

Testing:
- Oracle tiers 1-3
- New gtests covering each of the printing helpers and each of the new flags

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - removed accessflags::print_on and lifted to separate printers

Changes: https://git.openjdk.org/jdk/pull/30746/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=30746&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8380129
  Stats: 214 lines in 12 files changed: 162 ins; 28 del; 24 mod
  Patch: https://git.openjdk.org/jdk/pull/30746.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/30746/head:pull/30746

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

Reply via email to