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