RFR: 8353917: jnativescan: Simplify ClassResolver
Jorn Vernee
jvernee at openjdk.org
Tue Apr 8 11:44:58 UTC 2025
`jnativescan` uses the `ClassResolver` class to find both system classes, as well as application classes. In principle, a class resolver supports both iterating over all classes from that particular source, as well as looking up classes by name. However, the `ClassResolver` for system classes doesn't support iterating, and the lookup functionality for `ClassResolvers` from other sources is never used (only iterating).
This patch proposes to split the iterating functionality out of `ClassResolver`. Clients that were using this functionality will switch to using the iteration functionality that is available on `ClassFileSource` directly (whose classes were previously being wrapped in a `ClassResolver`). As a result of this latter change, we can now also let `NativeMethodFinder` operate on individual classes. We just iterate over all the class file sources in `JNativeScanTask`, and feed individual class models to `NativeMethodFinder`. I think this is a good conceptual simplification of `NativeMethodFinder`,
Since `ClassResolver` is now only used for system classes, I've removed it, leaving only its single implementation: `SystemClassResolver`.
Testing: running `langtools_jnativescan` test suite.
-------------
Commit messages:
- bump copyright years
- merge ClassResolver and SystemClassResolver
- Simplify ClassResolver
Changes: https://git.openjdk.org/jdk/pull/24493/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24493&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8353917
Stats: 374 lines in 5 files changed: 150 ins; 191 del; 33 mod
Patch: https://git.openjdk.org/jdk/pull/24493.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/24493/head:pull/24493
PR: https://git.openjdk.org/jdk/pull/24493
More information about the core-libs-dev
mailing list