RFR: 8329706: Implement -XX:+AOTClassLinking [v5]
Ioi Lam
iklam at openjdk.org
Mon Sep 16 21:54:49 UTC 2024
On Fri, 13 Sep 2024 16:09:25 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:
>> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
>>
>> @ashu-mehra comments
>
> src/hotspot/share/cds/aotClassLinker.cpp line 227:
>
>> 225: }
>> 226:
>> 227: int AOTClassLinker::num_initiated_classes(oop loader1, oop loader2) {
>
> The two loader arguments here are quite confusing marking it hard to understand the code. Can it be refactored as this:
>
>
> int AOTClassLinker::num_platform_initiated_classes() {
> // AOTLinkedClassBulkLoader will initiate loading of all public boot classes in the platform loader.
> return num_initiated_classes(nullptr);
> }
>
> int AOTClassLinker::num_app_initiated_classes() {
> // AOTLinkedClassBulkLoader will initiate loading of all public boot/platform classes in the app loader.
> return num_platform_initiated_classes + num_initiated_classes(SystemDictionary::java_platform_loader());
> }
>
> int AOTClassLinker::num_initiated_classes(oop loader) {
> int n = 0;
> for (int i = 0; i < _sorted_candidates->length(); i++) {
> InstanceKlass* ik = _sorted_candidates->at(i);
> if (ik->is_public() && !ik->is_hidden() &&
> (ik->class_loader() == loader) {
> n++;
> }
> }
>
> return n;
> }
I renamed the function to `AOTClassLinker::count_public_classes()` and made it handle only a single loader each time. This function is not speed critical so I think this way it's much easier to read.
> src/hotspot/share/cds/aotLinkedClassBulkLoader.cpp line 199:
>
>> 197: InstanceKlass* ik = classes->at(i);
>> 198: assert(ik->is_loaded(), "must have already been loaded by a parent loader");
>> 199: assert(ik->class_loader() != initiating_loader(), "must be a parent loader");
>
> Can we also add an assert that ik->class_loader() must be either boot or platform loader.
Done.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20843#discussion_r1762007825
PR Review Comment: https://git.openjdk.org/jdk/pull/20843#discussion_r1762007881
More information about the serviceability-dev
mailing list