RFR: 8356838: AOT incorrectly sets a cached class's loader type to boot
Ioi Lam
iklam at openjdk.org
Tue May 13 07:36:04 UTC 2025
When the AOT training run sees a class `X` loaded by a custom class loader, we should set `X`'s loader type to `unreg`. However, since [JDK-8348426](https://bugs.openjdk.org/browse/JDK-8348426), if the classfile for `X` can also be found under the module path, we will incorrectly set the loader type to `boot`. See `test3()` in the new test code.
The fix is to check for custom class loaders in `ClassLoader::record_result()` before checking the `classpath_index`.
I also cleaned up the code in `ClassLoader::record_result()` and `ClassLoaderExt::record_result_for_builtin_loader()` to reduce redundancy and improve readability.
I added `AOTClassLocationConfig::print()` which can be called inside gdb for debugging purposes.
-------------
Commit messages:
- More clean up
- added tests
- Clean up; removed test code
- step1
Changes: https://git.openjdk.org/jdk/pull/25199/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25199&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8356838
Stats: 147 lines in 8 files changed: 114 ins; 14 del; 19 mod
Patch: https://git.openjdk.org/jdk/pull/25199.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25199/head:pull/25199
PR: https://git.openjdk.org/jdk/pull/25199
More information about the hotspot-runtime-dev
mailing list