On Thu, 19 Jun 2025 06:59:31 GMT, Per Minborg <pminb...@openjdk.org> 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

Reply via email to