RFR: 8351565: Implement JEP 502: Stable Values (Preview) [v73]

Per Minborg pminborg at openjdk.org
Wed Apr 23 08:49:12 UTC 2025


On Wed, 23 Apr 2025 07:41:36 GMT, Per Minborg <pminborg at 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:
> 
>   Remove section on fun/coll sync

Here is a PR update applicable for https://github.com/openjdk/jdk/pull/23972/commits/1a25b8639b15228287da59fa0856eec1141d5021:

Tests in tier1, tier2, and tier3 pass in a multi-machine CI pipeline.

Here is a link to the generated JavaDocs:  https://cr.openjdk.org/~pminborg/stable-values2/api/java.base/java/lang/StableValue.html

Here are the current benchmark outputs (for an M1 on macOS Sequoia 15.4):


Benchmark                                              Mode  Cnt    Score   Error  Units
StableFunctionBenchmark.function                       avgt   10    4.612 ± 0.882  ns/op
StableFunctionBenchmark.map                            avgt   10    4.738 ± 0.920  ns/op
StableFunctionBenchmark.staticIntFunction              avgt   10    1.653 ± 0.037  ns/op
StableFunctionBenchmark.staticSMap                     avgt   10    2.771 ± 1.747  ns/op
StableFunctionSingleBenchmark.function                 avgt   10    4.268 ± 0.085  ns/op
StableFunctionSingleBenchmark.map                      avgt   10    4.241 ± 0.095  ns/op
StableFunctionSingleBenchmark.staticIntFunction        avgt   10    0.703 ± 0.009  ns/op
StableFunctionSingleBenchmark.staticSMap               avgt   10    0.727 ± 0.055  ns/op
StableIntFunctionBenchmark.intFunction                 avgt   10    1.543 ± 0.038  ns/op
StableIntFunctionBenchmark.list                        avgt   10    1.532 ± 0.061  ns/op
StableIntFunctionBenchmark.staticIntFunction           avgt   10    3.602 ± 0.079  ns/op
StableIntFunctionBenchmark.staticList                  avgt   10    2.279 ± 1.932  ns/op
StableIntFunctionSingleBenchmark.intFunction           avgt   10    2.434 ± 0.044  ns/op
StableIntFunctionSingleBenchmark.list                  avgt   10    2.547 ± 0.125  ns/op
StableIntFunctionSingleBenchmark.staticIntFunction     avgt   10    0.694 ± 0.026  ns/op
StableIntFunctionSingleBenchmark.staticList            avgt   10    0.691 ± 0.018  ns/op
StableMethodHandleBenchmark.atomic                     avgt   10    3.673 ± 0.069  ns/op
StableMethodHandleBenchmark.dcl                        avgt   10    3.645 ± 0.390  ns/op
StableMethodHandleBenchmark.finalMh                    avgt   10    0.712 ± 0.123  ns/op
StableMethodHandleBenchmark.map                        avgt   10    7.431 ± 0.314  ns/op
StableMethodHandleBenchmark.nonFinalMh                 avgt   10    3.170 ± 0.094  ns/op
StableMethodHandleBenchmark.stableMap                  avgt   10    0.695 ± 0.026  ns/op
StableMethodHandleBenchmark.stableMh                   avgt   10    0.698 ± 0.032  ns/op
StableSupplierBenchmark.stable                         avgt   10    1.390 ± 0.055  ns/op
StableSupplierBenchmark.staticStable                   avgt   10    0.373 ± 0.049  ns/op
StableSupplierBenchmark.staticSupplier                 avgt   10    0.352 ± 0.010  ns/op
StableSupplierBenchmark.supplier                       avgt   10    1.610 ± 0.125  ns/op
StableValueBenchmark.atomic                            avgt   10    1.424 ± 0.055  ns/op
StableValueBenchmark.dcl                               avgt   10    1.412 ± 0.044  ns/op
StableValueBenchmark.refSupplier                       avgt   10    0.458 ± 0.021  ns/op
StableValueBenchmark.stable                            avgt   10    1.400 ± 0.066  ns/op
StableValueBenchmark.stableNull                        avgt   10    1.185 ± 0.068  ns/op
StableValueBenchmark.staticAtomic                      avgt   10    1.190 ± 0.046  ns/op
StableValueBenchmark.staticDcl                         avgt   10    0.342 ± 0.014  ns/op
StableValueBenchmark.staticHolder                      avgt   10    1.479 ± 0.181  ns/op
StableValueBenchmark.staticRecordHolder                avgt   10    0.339 ± 0.013  ns/op
StableValueBenchmark.staticStable                      avgt   10    0.336 ± 0.018  ns/op
VarHandleHolderBenchmark.confinedStableFunctionLoop    avgt    5  226.868 ± 2.850  ns/op
VarHandleHolderBenchmark.confinedStableMapElementLoop  avgt    5  147.140 ± 2.885  ns/op
VarHandleHolderBenchmark.confinedStableMapLoop         avgt    5  226.109 ± 5.524  ns/op
VarHandleHolderBenchmark.confinedStableValueLoop       avgt    5  146.908 ± 1.027  ns/op
VarHandleHolderBenchmark.confinedUnmodifiableMapLoop   avgt    5  147.872 ± 6.520  ns/op
VarHandleHolderBenchmark.confinedVarHandleLoop         avgt    5  139.456 ± 3.091  ns/op

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

PR Comment: https://git.openjdk.org/jdk/pull/23972#issuecomment-2823529097


More information about the core-libs-dev mailing list