[jdk21u-dev] RFR: 8318157: RISC-V: implement ensureMaterializedForStackWalk intrinsic

Olga Mikhaltsova omikhaltcova at openjdk.org
Mon Jan 29 14:20:58 UTC 2024


Hi! I would like to backport [JDK-8318157](https://bugs.openjdk.org/browse/JDK-8318157) to jdk21u in order to improve performance via the ensureMaterializedForStackWalk C2 intrinsic. It's a clean backport related only to RISC-V.
Tested: tier1 tests passed.

The benchmark shows the following performance improvement on the T-Head RVB-ICE board:
**Before**

Benchmark                                             Mode  Cnt    Score    Error  Units
ScopedValues.CreateBindThenGetThenRemove_ScopedValue  avgt   10  801.570 ± 40.067  ns/op
ScopedValues.bindThenGetNoRemove_ThreadLocal          avgt   10   47.918 ±  0.267  ns/op
ScopedValues.bindThenGetThenRemove_ScopedValue        avgt   10  733.398 ± 44.490  ns/op
ScopedValues.bindThenGetThenRemove_ThreadLocal        avgt   10  862.636 ± 12.210  ns/op
ScopedValues.bindViaGet_ScopedValue                   avgt   10  551.035 ± 18.560  ns/op
ScopedValues.bind_ScopedValue                         avgt   10  556.024 ± 21.099  ns/op
ScopedValues.bind_ThreadLocal                         avgt   10  850.550 ± 17.945  ns/op
ScopedValues.counter_ScopedValue                      avgt   10   35.339 ±  0.322  ns/op
ScopedValues.counter_ThreadLocal                      avgt   10   43.619 ±  0.187  ns/op
ScopedValues.setNoRemove_ScopedValue                  avgt   10   40.175 ±  0.259  ns/op
ScopedValues.setNoRemove_ThreadLocal                  avgt   10   43.164 ±  0.343  ns/op
ScopedValues.sixValues_ScopedValue                    avgt   10    2.550 ±  0.015  us/op
ScopedValues.sixValues_ThreadLocal                    avgt   10    8.932 ±  0.019  us/op
ScopedValues.thousandAdds_ScopedValue                 avgt   10    0.161 ±  0.004  us/op
ScopedValues.thousandAdds_ThreadLocal                 avgt   10    9.649 ±  0.019  us/op
ScopedValues.thousandIsBoundQueries                   avgt   10   32.859 ±  0.368  ns/op
ScopedValues.thousandMaybeGets                        avgt   10  153.627 ±  3.627  ns/op

**After**

Benchmark                                             Mode  Cnt    Score    Error  Units
ScopedValues.CreateBindThenGetThenRemove_ScopedValue  avgt   10  370.934 ±  5.118  ns/op
ScopedValues.bindThenGetNoRemove_ThreadLocal          avgt   10   48.777 ±  3.015  ns/op
ScopedValues.bindThenGetThenRemove_ScopedValue        avgt   10  317.331 ± 19.020  ns/op
ScopedValues.bindThenGetThenRemove_ThreadLocal        avgt   10  880.733 ± 56.253  ns/op
ScopedValues.bindViaGet_ScopedValue                   avgt   10  159.534 ±  6.276  ns/op
ScopedValues.bind_ScopedValue                         avgt   10  160.035 ±  5.857  ns/op
ScopedValues.bind_ThreadLocal                         avgt   10  854.117 ± 13.623  ns/op
ScopedValues.counter_ScopedValue                      avgt   10   35.351 ±  0.344  ns/op
ScopedValues.counter_ThreadLocal                      avgt   10   48.654 ±  0.306  ns/op
ScopedValues.setNoRemove_ScopedValue                  avgt   10   40.246 ±  0.259  ns/op
ScopedValues.setNoRemove_ThreadLocal                  avgt   10   47.947 ±  0.283  ns/op
ScopedValues.sixValues_ScopedValue                    avgt   10    2.121 ±  0.004  us/op
ScopedValues.sixValues_ThreadLocal                    avgt   10    9.894 ±  0.019  us/op
ScopedValues.thousandAdds_ScopedValue                 avgt   10    0.162 ±  0.005  us/op
ScopedValues.thousandAdds_ThreadLocal                 avgt   10   10.900 ±  0.021  us/op
ScopedValues.thousandIsBoundQueries                   avgt   10   31.986 ±  0.407  ns/op
ScopedValues.thousandMaybeGets                        avgt   10  159.027 ±  4.133  ns/op

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

Commit messages:
 - Backport d6b4aa01a20eb7ecd44602a9fab3e3380bff3d3a

Changes: https://git.openjdk.org/jdk21u-dev/pull/224/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk21u-dev&pr=224&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8318157
  Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk21u-dev/pull/224.diff
  Fetch: git fetch https://git.openjdk.org/jdk21u-dev.git pull/224/head:pull/224

PR: https://git.openjdk.org/jdk21u-dev/pull/224


More information about the jdk-updates-dev mailing list