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
