On Wed, 18 Nov 2020 23:58:25 GMT, Calvin Cheung <cche...@openjdk.org> wrote:
> Before this change, the setting of the > `jdk.internal.lambda.disableEagerInitialization` property was not captured > during dumping of lambda proxy classes. There's a workaround in > `LambdaProxyClassArchive.find`, it won't call `findFromArchive` if the above > property is set. > > This change adds handling of the > `jdk.internal.lambda.disableEagerInitialization` property, specifically: > > - remove the above workaround; > > - capture the setting of the property in the archive header during CDS dump > time; > > - during runtime when finding an archived lambda proxy class, the setting of > the property will be compared with the stored value in the archive header. > If the values don't match, the archived lambda proxy class won't be used. > > Tests: > > - [x] ran all cds tests locally on linux-x64 > > - [x] ran the `hotspot_appcds_dynamic` test group with > `-Dtest.dynamic.cds.archive=true` on linux-x64 > > - [x] mach5 tiers 1,2,3 (in progress) src/hotspot/share/memory/metaspaceShared.cpp line 1821: > 1819: } > 1820: > 1821: void MetaspaceShared::set_disable_eager_init(const char* value) { strcasecmp is not platform dependent, why not use it for all? It does not need <string.h> included. test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/LambdaEagerInit.java line 35: > 33: * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds > 34: * @compile > ../../../../../../jdk/java/lang/invoke/lambda/LambdaEagerInitTest.java > 35: * @build sun.hotspot.WhiteBox Do we need WB here? ------------- PR: https://git.openjdk.java.net/jdk/pull/1301