On Fri, 19 Sep 2025 01:38:25 GMT, Ioi Lam <[email protected]> wrote:

>> This PR loads the classes for the boot/platform/app loaders with 
>> `AOTLinkedClassBulkLoader::preload_classes()`. This happens at the very 
>> beginning of `vmClasses::resolve_all()`, before any Java code is executed. 
>> 
>> - We essentially iterate over all the classes inside the 
>> `AOTLinkedClassTable` and adds them into the system dictionary using the new 
>> method `SystemDictionary::preload_class()`.
>> - `SystemDictionary::preload_class(..., k)` is lightweight because it's 
>> called in a single thread after all super types of `k` have been loaded. So 
>> most of the complicated work (such as place holders, circularity detection, 
>> etc) in `SystemDictionary::resolve_or_null(..., k)` can be skipped. We also 
>> don't need to call into `ClassLoader::load_class()` as the boot/platform/app 
>> loaders are well-behaved.
>> - In the assembly phase, we record the mirror, package, protection domain, 
>> code source, etc, of these classes. So there's no need to programmatically 
>> create them in the production run. See `HeapShared::copy_java_mirror()` and 
>> also changes in ClassLoader.java and SecureClassLoader.java.
>
> Ioi Lam has updated the pull request with a new target base due to a merge or 
> a rebase. The pull request now contains 27 commits:
> 
>  - Removed JVMCI-specific checks that are no longer necessary with class 
> preloading -- all CP entries discoverable by JVMCI will always point to 
> already-loaded classes
>  - Simplify implementation after JDK-8367366: Do not support 
> -XX:+AOTClassLinking for dynamic CDS archive
>  - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>  - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>  - @ashu-mehra comment: removed 
> AOTLinkedClassBulkLoader::is_pending_aot_linked_class
>  - @ashu-mehra review comments
>  - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>  - Merge branch 'master' into 8350550-preload-aot-classes-during-vm-bootstrap
>  - @DanHeidinga comments -- added comments and asserts about the handling of 
> enums
>  - @DanHeidinga comment - add test: user enum types are not initialized in 
> assembly phase
>  - ... and 17 more: https://git.openjdk.org/jdk/compare/91a97943...04cb7a64

@ashu-mehra , I've remove all the code that was needed to handle aot-linked 
classes from the dynamic archive but is no longer needed since 
[JDK-8367366](https://bugs.openjdk.org/browse/JDK-8367366). I am able to remove 
about 200 lines of code.

I also renamed a few functions in `AOTLinkedClassBulkLoader` to reflect the 
up-to-date meaning. 

`CDSConfig::is_using_preloaded_classes()` has been removed and replaced with 
`CDSConfig::is_using_aot_linked_classes()`

The handling of `fixup_mirror_list()` and `fixup_module_field_list()` in 
javaClasses.cpp have been made uniform.

Please see 
https://github.com/openjdk/jdk/pull/26375/commits/896ce8b9636a5534f1db487afbe27e875022fbfa

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

PR Comment: https://git.openjdk.org/jdk/pull/26375#issuecomment-3310193834

Reply via email to