RFR: 8366178: Implement JEP 526: Lazy Constants (Second Preview) [v24]
Jorn Vernee
jvernee at openjdk.org
Wed Nov 12 16:40:02 UTC 2025
On Mon, 10 Nov 2025 14:59:03 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> Implement JEP 526: Lazy Constants (Second Preview)
>>
>> The lazy list/map implementations are broken out from `ImmutableCollections` to a separate class.
>>
>> The old benchmarks are not moved/renamed to allow comparison with previous releases.
>>
>> `java.util.Optional` is updated so that its field is annotated with `@Stable`. This is to allow `Optional` instances to be held in lazy constants and still provide constant folding.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>
> Add @AOTSafeClassInitializer
src/java.base/share/classes/jdk/internal/lang/LazyConstantImpl.java line 47:
> 45:
> 46: // Unsafe allows `LazyConstant` instances to be used early in the boot sequence
> 47: static final Unsafe UNSAFE = Unsafe.getUnsafe();
Suggestion:
private static final Unsafe UNSAFE = Unsafe.getUnsafe();
test/jdk/java/lang/LazyConstant/LazyConstantSafePublicationTest.java line 117:
> 115: @Test
> 116: void mainTest() {
> 117: CONSTANTS.set(constants());
Instead of passing this through a static field, why not just pass it through the constructor of Producer and Consumer? (which are created below)
test/micro/org/openjdk/bench/java/lang/stable/StableMapSingleBenchmark.java line 66:
> 64: private static final Map<MyEnum, Integer> MAP_ENUM = Map.ofLazy(EnumSet.allOf(MyEnum.class), MyEnum::ordinal);
> 65: private static final Map<MyEnum, Optional<Integer>> MAP_ENUM_OPTIONAL = Map.ofLazy(EnumSet.allOf(MyEnum.class), e -> Optional.of(e.ordinal()));
> 66: private static final Function<Integer, Integer> FUNCTION = MAP::get;
I suppose the function variants are not very interesting to test, since they just delegate to Map::get, Maybe consider removing them
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2514957700
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2514930623
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2514913683
More information about the core-libs-dev
mailing list