RFR: 8318157: RISC-V: implement ensureMaterializedForStackWalk intrinsic

Olga Mikhaltsova omikhaltcova at openjdk.org
Mon Nov 27 15:43:22 UTC 2023


Please, review addition of the ensureMaterializedForStackWalk C2 intrinsic for RISC-V. 
It's implemented by analogy to AArch64 and x86_64 [1].

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  873.072  12.051  ns/op
ScopedValues.bindThenGetNoRemove_ThreadLocal          avgt   10   55.507  18.006  ns/op
ScopedValues.bindThenGetThenRemove_ScopedValue        avgt   10  758.185  14.585  ns/op
ScopedValues.bindThenGetThenRemove_ThreadLocal        avgt   10  922.742   9.597  ns/op
ScopedValues.bindViaGet_ScopedValue                   avgt   10  603.164  13.694  ns/op
ScopedValues.bind_ScopedValue                         avgt   10  557.377   9.591  ns/op
ScopedValues.bind_ThreadLocal                         avgt   10  854.636  17.014  ns/op
ScopedValues.counter_ScopedValue                      avgt   10   35.367   0.421  ns/op
ScopedValues.counter_ThreadLocal                      avgt   10   45.345   0.283  ns/op
ScopedValues.setNoRemove_ScopedValue                  avgt   10   39.838   0.432  ns/op
ScopedValues.setNoRemove_ThreadLocal                  avgt   10   44.769   0.404  ns/op
ScopedValues.sixValues_ScopedValue                    avgt   10    2.566   0.006  us/op
ScopedValues.sixValues_ThreadLocal                    avgt   10    9.067   0.020  us/op
ScopedValues.thousandAdds_ScopedValue                 avgt   10    0.158   0.004  us/op
ScopedValues.thousandAdds_ThreadLocal                 avgt   10    9.662   0.019  us/op
ScopedValues.thousandIsBoundQueries                   avgt   10   31.203   0.451  ns/op
ScopedValues.thousandMaybeGets                        avgt   10  156.356   4.469  ns/op

**After**

Benchmark                                             Mode  Cnt    Score    Error  Units
ScopedValues.CreateBindThenGetThenRemove_ScopedValue  avgt   10  367.616   4.382  ns/op
ScopedValues.bindThenGetNoRemove_ThreadLocal          avgt   10   55.935  18.048  ns/op
ScopedValues.bindThenGetThenRemove_ScopedValue        avgt   10  371.733   2.835  ns/op
ScopedValues.bindThenGetThenRemove_ThreadLocal        avgt   10  902.112  12.709  ns/op
ScopedValues.bindViaGet_ScopedValue                   avgt   10  158.404   2.920  ns/op
ScopedValues.bind_ScopedValue                         avgt   10  158.365   2.328  ns/op
ScopedValues.bind_ThreadLocal                         avgt   10  908.319   9.238  ns/op
ScopedValues.counter_ScopedValue                      avgt   10   35.438   0.470  ns/op
ScopedValues.counter_ThreadLocal                      avgt   10   43.705   0.435  ns/op
ScopedValues.setNoRemove_ScopedValue                  avgt   10   39.848   0.638  ns/op
ScopedValues.setNoRemove_ThreadLocal                  avgt   10   47.336  11.987  ns/op
ScopedValues.sixValues_ScopedValue                    avgt   10    2.847   0.008  us/op
ScopedValues.sixValues_ThreadLocal                    avgt   10    9.066   0.017  us/op
ScopedValues.thousandAdds_ScopedValue                 avgt   10    0.160   0.005  us/op
ScopedValues.thousandAdds_ThreadLocal                 avgt   10    9.651   0.020  us/op
ScopedValues.thousandIsBoundQueries                   avgt   10   31.145   0.512  ns/op
ScopedValues.thousandMaybeGets                        avgt   10  160.829   6.699  ns/op


[1] [JDK-8286666](https://bugs.openjdk.org/browse/JDK-8286666), https://github.com/openjdk/jdk/commit/221e1a426070088b819ddc37b7ca77d9d8626eb4#diff-018aa61d1a7aafcf70a535fcd40a318a4bd6511fd40ac39ce4be90cc52216749R3635

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

Commit messages:
 - 8318157: RISC-V: implement ensureMaterializedForStackWalk intrinsic

Changes: https://git.openjdk.org/jdk/pull/16808/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16808&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/jdk/pull/16808.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16808/head:pull/16808

PR: https://git.openjdk.org/jdk/pull/16808


More information about the hotspot-compiler-dev mailing list