RFR: 8361497: Scoped Values: orElse and orElseThrow do not access the cache

Chen Liang liach at openjdk.org
Tue Jul 8 12:13:38 UTC 2025


On Mon, 7 Jul 2025 16:13:08 GMT, Andrew Haley <aph at openjdk.org> wrote:

> Neither `ScopedValue.orElse` nor `ScopedValue.orElseThrow` consult the cache when searching for a binding. Neither do they update the cache when a binding is found.
> While this issue does not affect spec compliance, it is surprising to users that `x.orElse(other)` should be slower than `x.isBound ? x.get() : other`.

True, we might have to split another copy for orElse if it turns out critical too. Hope future generic specialization may allow separate inlining.

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

PR Comment: https://git.openjdk.org/jdk/pull/26164#issuecomment-3048671710


More information about the core-libs-dev mailing list