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

Yumin Qi minqi at openjdk.java.net
Mon May 3 16:46:02 UTC 2021


On Mon, 3 May 2021 05:28:39 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 incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 18 additional commits since the last revision:
>> 
>>  - Removed macro for exception handling, removed checking exception after reload class
>>  - Merge branch 'master' of ssh://github.com/yminqi/jdk into jdk-8255493
>>  - Changed DynamicArchive::dump as static counterpart. Suppressed exceptions in LambdaFormInvokers::regenerate_holder_classes except for oom
>>  - Merge branch 'master' into jdk-8255493
>>  - Merge branch 'master' of ssh://github.com/yminqi/jdk into jdk-8255493
>>  - Only store four lambda invoker (which will be regenerated in dynamic dump) lines in static archive
>>  - Removed TRAP from regenerate_holder_classes, also correct SharedLambdaDictionaryPrinter index
>>  - Merge branch 'master' into jdk-8255493
>>  - Restore filemap.[ch]pp
>>  - Remove unnecessary file header including
>>  - ... and 8 more: https://git.openjdk.java.net/jdk/compare/a3c65bfb...95d68855
>
> src/hotspot/share/cds/lambdaFormInvokers.cpp line 142:
> 
>> 140:     memcpy(buf, (char*)h_bytes->byte_at_addr(0), len);
>> 141:     ClassFileStream st((u1*)buf, len, NULL, ClassFileStream::verify);
>> 142:     reload_class(class_name, st, THREAD);
> 
> `reload_class(class_name, st, THREAD);` should be `reload_class(class_name, st, CHECK);`. If an error happens inside there, it means `CDS.generateLambdaFormHolderClasses()` has generated a bad classfile, or we have hit an OOM. In either case, we should report the error back to the caller.

Thanks, it should be a check here.

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

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


More information about the hotspot-dev mailing list