On Thu, 24 Apr 2025 10:37:59 GMT, Per Minborg <pminb...@openjdk.org> wrote:

>> Implement JEP 502.
>> 
>> The PR passes tier1-tier3 tests.
>
> Per Minborg has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Make public constuctor private

Looks mostly good. Left a few more inline comments

src/java.base/share/classes/java/lang/StableValue.java line 618:

> 616:      *
> 617:      * @param size       the size of the allowed inputs in the continuous
> 618:      *                   interval {@code [0, size)}

"Size of allowed inputs" doesn't seem quite right, maybe:

Suggestion:

     * @param size       the upper bound of the range {@code [0, size)} 
indicating the allowed inputs

src/java.base/share/classes/java/lang/StableValue.java line 619:

> 617:      * @param size       the size of the allowed inputs in the continuous
> 618:      *                   interval {@code [0, size)}
> 619:      * @param underlying IntFunction used to compute cached values

Suggestion:

     * @param underlying {@code IntFunction} used to compute cached values

test/jdk/java/lang/StableValue/StableFunctionTest.java line 79:

> 77:     void factoryInvariants(Set<Value> inputs) {
> 78:         assertThrows(NullPointerException.class, () -> 
> StableValue.function(null, MAPPER));
> 79:         assertThrows(NullPointerException.class, () -> 
> StableValue.function(inputs, null));

I think you also need a case for `null` elements in `inputs`

test/jdk/java/lang/StableValue/StableValueTest.java line 373:

> 371:                 .toList();
> 372:         threads.forEach(Thread::start);
> 373:         LockSupport.parkNanos(TimeUnit.MILLISECONDS.toNanos(1));

Instead of parking and calling `countDown` here, which might be unreliable if a 
particular thread doesn't get scheduled, you could set the latch value to 
`noThreads`, and then do a `starter.countDown()` before calling `await`. That 
should start all the threads running at the same time once all of them are 
ready.

test/micro/org/openjdk/bench/java/lang/stable/StableMethodHandleBenchmark.java 
line 121:

> 119:                 cp.nameAndTypeEntry(DEFAULT_NAME, CD_MethodHandle)));
> 120:         return null;
> 121:     }

Seems unused

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

PR Review: https://git.openjdk.org/jdk/pull/23972#pullrequestreview-2803046751
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2066109981
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2066113200
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2066747882
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2066781044
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2066809541

Reply via email to