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