RFR: 8247536: Support for pre-generated java.lang.invoke classes in CDS static archive [v12]

Yumin Qi minqi at openjdk.java.net
Wed Oct 7 19:44:27 UTC 2020


On Wed, 7 Oct 2020 17:48:41 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> Yumin Qi has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains
>> 23 commits:
>>  - Added new separate function to CDS for logging species and modified the existing function to log lambda form invokers.
>>    Changed isDumpLoadedClassList to a reasonable name isDumpingClassList as read only in CDS.
>>  - Merge branch 'master' of https://github.com/openjdk/jdk into jdk-8247536
>>  - Removed unused imports.
>>  - Fixed comments with correct class and method name in CDS, removed unused variables after last change.
>>  - Moved and renamed cdsGenerateHolderClasses from GenerateJLIClassesHelp to CDS as generateLambdaFormHolderClasses. Added
>>    input verification function in CDS before class generation. Added more test scenarios. Removed trailing unused ending
>>    words for output of lambda form trace line in case of DumpLoadedClassList.
>>  - Move the check work to java, restore code in VM. Modified test code according to the changes. The invoke name
>>    verififcation is not implemented since not all the holder class are processed, not all the functions of processed
>>    holder classes are added. For holder class with DirectMethodHandle in its name, only the name in the
>>    DMH_METHOD_TYPE_MAP keyset is added, ithe line with other names just gets skipped silently. This makes the verification
>>    on invoke names difficul, a name not in the keyset should not fail the test. Also add a boolean to
>>    cdsGenerateHolderClasses to indicate call path.
>>  - Remove trailing word of line which is not used in holder class regeneration. There is a trailing LF (Line Feed) so trim
>>    white spaces from both front and end of the line or it will fail method type validation.
>>  - In case of exception happens during reloading class, CHECK will return without free the allocated buffer for class
>>    bytes so moved the buffer allocation and freeing to caller. Also removed test 6 since there is not guarantee that we
>>    can give a signature which will always fail. Additional changes to GenerateJLIClassesHelper according to review
>>    suggestion.
>>  - Merge branch 'master' of https://github.com/openjdk/jdk into jdk-8247536
>>  - Merge branch 'master' of https://git.openjdk.java.net/jdk into jdk-8247536
>>  - ... and 13 more: https://git.openjdk.java.net/jdk/compare/82fe023b...f5584dcf
>
> src/hotspot/share/prims/jvm.cpp line 3872:
> 
>> 3870: JVM_ENTRY(jboolean, JVM_IsDumpingClassList(JNIEnv *env))
>> 3871:   JVMWrapper("JVM_IsDumpingClassList");
>> 3872:   return DumpLoadedClassList != NULL && classlist_file->is_open();
> 
> For sanity, it's better to add `classlist_file != NULL`

done

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

PR: https://git.openjdk.java.net/jdk/pull/193



More information about the build-dev mailing list