RFR: 8293336: AOT-linking of invokedynamic for lambda expression and string concat [v5]

Ioi Lam iklam at openjdk.org
Fri Oct 18 04:22:09 UTC 2024


On Tue, 15 Oct 2024 15:19:36 GMT, Dan Heidinga <heidinga at openjdk.org> wrote:

>> Ioi Lam has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 29 commits:
>> 
>>  - @DanHeidinga comments -- added ConcurrentHashMap::runtimeSetup() to init NCPU to runtime value; also use the same runtimeSetup() pattern to call registerNatives() for Class.java and Unsafe.java
>>  - Merge branch 'jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke' into jep-483-step-07-8293336-store-lambda-forms-in-cds-archive
>>  - Fixed JDK-8341988: jstack launched with AOT cache created with -XX:+AOTClassLinking crashes
>>  - 8341600: [premain] Automatic aot-init of classes used by java.lang.invoke
>>  - @adinn comments
>>  - improve checks for not changing <clinit> order for aot linking of lambda; added comprehensive test cases: AOTLinkedLambdasApp::testClinitOrder()
>>  - Clean up of aotClassInitializer and cdsHeaVerifier; added lambda test cases for <clinit> order of app classes
>>  - Merge branch 'jep-483-step-06-8311071-avoid-soft-refs-in-java-lang-invoke' into jep-483-step-07-8293336-store-lambda-forms-in-cds-archive
>>  - Require all <clinit> of supertypes of aot-inited classes to be executed in assembly phase
>>  - Limit the use of AOTHolder
>>  - ... and 19 more: https://git.openjdk.org/jdk/compare/e46b910a...382446d4
>
> src/hotspot/share/cds/heapShared.cpp line 1140:
> 
>> 1138:       return false;
>> 1139:     }
>> 1140:   }
> 
> This is conservatively correct in that it checks all implemented interfaces.  We could be less conservative and only check interfaces that have a "non-abstract non-static" (aka default) method as those are the interfaces that will be initialized along with the class as per JVMS 5.5

I've removed this function altogether. It was used in logging only, and it wasn't clear what the output meant (w.r.t to interfaces that have non-trivial <clinit>). I think it's best to remove this function, and implement it properly in a future RFE that automatically aot-init all classes that can be initialized with no observable side effects.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1805829136


More information about the core-libs-dev mailing list