Integrated: 8356838: AOT incorrectly sets a cached class's loader type to boot

Ioi Lam iklam at openjdk.org
Wed May 14 23:14:09 UTC 2025


On Tue, 13 May 2025 07:30:30 GMT, Ioi Lam <iklam at openjdk.org> wrote:

> 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.

This pull request has now been integrated.

Changeset: 5e50a584
Author:    Ioi Lam <iklam at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/5e50a584744d316dd881c9404f75e65f31bb0e75
Stats:     146 lines in 8 files changed: 114 ins; 14 del; 18 mod

8356838: AOT incorrectly sets a cached class's loader type to boot

Reviewed-by: ccheung, iveresov

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

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


More information about the hotspot-runtime-dev mailing list