On Thu, 19 Jun 2025 06:59:31 GMT, Per Minborg <[email protected]> wrote:
>> This PR proposes to release the underlying function if a stable function or
>> collection has invoked its underlying supplier exhaustively so that it can
>> be collected.
>>
>> This PR passes tier1, tier2, and tier3 testing on multiple platforms.
>
> Per Minborg has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Fix performance regression
src/java.base/share/classes/jdk/internal/lang/stable/StableValueImpl.java line
150:
> 148: // The mutex is not reentrant so we know newValue should
> be returned
> 149: wrapAndSet(newValue);
> 150: if (underlyingHolder != null) {
Under what circumstances can the underlyingHolder be null here?
src/java.base/share/classes/jdk/internal/lang/stable/UnderlyingHolder.java line
35:
> 33: this.counter = counter;
> 34: // Safe publication
> 35: UNSAFE.storeStoreFence();
This may actually be substitutable by making the initial write to counter a
volatile write:
Suggestion:
Unsafe.putIntVolatile(this, COUNTER_OFFSET, counter); // Safe
publication of underlying and counter
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25878#discussion_r2156504893
PR Review Comment: https://git.openjdk.org/jdk/pull/25878#discussion_r2156509309