RFR: 8263968: CDS: java/lang/ModuleLayer.EMPTY_LAYER should be singleton
Alan Bateman
alanb at openjdk.java.net
Tue Mar 23 06:50:43 UTC 2021
On Mon, 22 Mar 2021 19:40:19 GMT, Aleksei Voitylov <avoitylov at openjdk.org> wrote:
> With CDS and G1, test api/java_lang/ModuleLayer/Boot.html fails in JDK 16.
>
> After JDK-8253081 with CDS enabled two instances of empty layer appear in the runtime. One comes from default initialization of java/lang/ModuleLayer.EMPTY_LAYER, another one comes from CDS archive and is returned by ModuleLayer.boot().parents().get(0). The fix makes java/lang/ModuleLayer.EMPTY_LAYER a singleton with both CDS on and off, similar to java/lang/module/Configuration.EMPTY_CONFIGURATION.
>
> Testing: JCK 16, jtreg (including newly added test), pre-submit GitHub actions tests.
Marked as reviewed by alanb (Reviewer).
src/java.base/share/classes/java/lang/ModuleLayer.java line 156:
> 154:
> 155: static {
> 156: // Initialize EMPTY_LAYER from the archive.
Style wide you can drop L154 and L156 and the comment on EMPTY_LAYER will cover its initialization too.
Otherwise looks okay but the more archiving we add does make it harder to change this code.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3131
More information about the hotspot-runtime-dev
mailing list