Extend MOVK-based scheme to MOVK/MOVZ allowing to store 19 bits of metadata.
Choose number of metadata slots in post-call NOP sequence between 1 and 2
depending on the offset from the CodeBlob header.
Additionally, implement ADR/ADRP-based metadata storage - that provides 22 bits
instead of 16 bits to store metadata. This can be enabled via
UsePostCallSequenceWithADRP option.
Renaissance 0.15.0 benchmark results (MOVK-based scheme)
Neoverse V1.
The runs were limited to 16 cores.
Number of runs:
6 for baseline, 6 for the changes - interleaved pairs.
Command line:
java -jar renaissance-jmh-0.15.0.jar \
-bm avgt -gc true -v extra \
-jvmArgsAppend '-Xbatch -XX:-UseDynamicNumberOfCompilerThreads \
-XX:-CICompilerCountPerCPU -XX:ActiveProcessorCount=16 \
-XX:CICompilerCount=2 -Xms8g -Xmx8g -XX:+AlwaysPreTouch \
-XX:+UseG1GC'
The change is geometric mean of ratios across 6 the pairs of runs.
| Benchmark | Change | 90% CI
for the change |
| ----------------------------------------------------- | -------- |
--------------------- |
| org.renaissance.actors.JmhAkkaUct.run | -0.215% |
-2.652% to 1.357% |
| org.renaissance.actors.JmhReactors.run | -0.166% |
-1.974% to 1.775% |
| org.renaissance.jdk.concurrent.JmhFjKmeans.run | 0.222% |
-0.492% to 0.933% |
| org.renaissance.jdk.concurrent.JmhFutureGenetic.run | -1.880% |
-2.438% to -1.343% |
| org.renaissance.jdk.streams.JmhMnemonics.run | -0.500% |
-1.032% to 0.089% |
| org.renaissance.jdk.streams.JmhParMnemonics.run | -0.740% |
-2.092% to 0.639% |
| org.renaissance.jdk.streams.JmhScrabble.run | -0.031% |
-0.353% to 0.310% |
| org.renaissance.neo4j.JmhNeo4jAnalytics.run | -0.873% |
-2.323% to 0.427% |
| org.renaissance.rx.JmhRxScrabble.run | -0.512% |
-1.121% to 0.049% |
| org.renaissance.scala.dotty.JmhDotty.run | -0.219% |
-1.108% to 0.708% |
| org.renaissance.scala.sat.JmhScalaDoku.run | -2.750% |
-6.426% to -0.827% |
| org.renaissance.scala.stdlib.JmhScalaKmeans.run | 0.046% |
-0.383% to 0.408% |
| org.renaissance.scala.stm.JmhPhilosophers.run | 1.497% |
-0.955% to 3.923% |
| org.renaissance.scala.stm.JmhScalaStmBench7.run | -0.096% |
-0.773% to 0.586% |
| org.renaissance.twitter.finagle.JmhFinagleChirper.run | -0.200% |
-1.143% to 0.698% |
| org.renaissance.twitter.finagle.JmhFinagleHttp.run | -0.865% |
-1.328% to -0.251% |
|------------------------------------------------------------------------------------------|
| Overall geometric mean: -0.459% change (90% CI: [-0.839%, -0.097%])
|
|------------------------------------------------------------------------------------------|
-------------
Commit messages:
- 8373696: AArch64: Refine post-call NOPs
- 8373696: AArch64: C1: Embed FP constants into the main code
Changes: https://git.openjdk.org/jdk/pull/28855/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28855&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8373696
Stats: 573 lines in 12 files changed: 473 ins; 42 del; 58 mod
Patch: https://git.openjdk.org/jdk/pull/28855.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/28855/head:pull/28855
PR: https://git.openjdk.org/jdk/pull/28855