RFR: 8349727: [PPC] C1: Improve Class.isInstance intrinsic [v3]

Martin Doerr mdoerr at openjdk.org
Wed Feb 19 13:25:09 UTC 2025


> PPC64 implementation of [JDK-8337251](https://bugs.openjdk.org/browse/JDK-8337251).
> The new runtime stub is called like a C function. The initial version therefore used a `FunctionDescriptor` with relocation on PPC64 with ABIv1. I've changed that with the 3rd Commit. `rt_call` jumps directly to the entry point, now. 
> 
> Performance measured on Power10: `make run-test TEST="micro:SecondarySupersLookup" MICRO="VM_OPTIONS=-XX:TieredStopAtLevel=1"`
> 
> Before this patch (C code)
> 
> Benchmark                             Mode  Cnt   Score   Error  Units
> SecondarySupersLookup.testNegative00  avgt   15  18.570 ± 0.009  ns/op
> ...
> SecondarySupersLookup.testNegative30  avgt   15  18.566 ± 0.002  ns/op
> SecondarySupersLookup.testNegative32  avgt   15  19.177 ± 1.347  ns/op
> SecondarySupersLookup.testNegative40  avgt   15  18.569 ± 0.006  ns/op
> SecondarySupersLookup.testNegative50  avgt   15  19.207 ± 1.334  ns/op
> SecondarySupersLookup.testNegative55  avgt   15  19.708 ± 1.338  ns/op
> SecondarySupersLookup.testNegative56  avgt   15  19.132 ± 0.137  ns/op
> SecondarySupersLookup.testNegative57  avgt   15  19.133 ± 0.134  ns/op
> SecondarySupersLookup.testNegative58  avgt   15  19.772 ± 1.316  ns/op
> SecondarySupersLookup.testNegative59  avgt   15  19.109 ± 0.014  ns/op
> SecondarySupersLookup.testNegative60  avgt   15  22.381 ± 0.016  ns/op
> SecondarySupersLookup.testNegative61  avgt   15  22.331 ± 0.011  ns/op
> SecondarySupersLookup.testNegative62  avgt   15  22.352 ± 0.029  ns/op
> SecondarySupersLookup.testNegative63  avgt   15  30.371 ± 0.031  ns/op
> SecondarySupersLookup.testNegative64  avgt   15  29.927 ± 0.221  ns/op
> SecondarySupersLookup.testPositive01  avgt   15  18.571 ± 0.006  ns/op
> ...
> SecondarySupersLookup.testPositive09  avgt   15  18.599 ± 0.140  ns/op
> SecondarySupersLookup.testPositive10  avgt   15  19.210 ± 1.332  ns/op
> SecondarySupersLookup.testPositive16  avgt   15  18.603 ± 0.142  ns/op
> SecondarySupersLookup.testPositive20  avgt   15  19.210 ± 1.333  ns/op
> SecondarySupersLookup.testPositive30  avgt   15  18.600 ± 0.140  ns/op
> SecondarySupersLookup.testPositive32  avgt   15  18.637 ± 0.189  ns/op
> SecondarySupersLookup.testPositive40  avgt   15  19.137 ± 0.190  ns/op
> SecondarySupersLookup.testPositive50  avgt   15  18.567 ± 0.002  ns/op
> SecondarySupersLookup.testPositive60  avgt   15  19.069 ± 0.004  ns/op
> SecondarySupersLookup.testPositive63  avgt   15  26.024 ± 0.017  ns/op
> SecondarySupersLookup.testPositive64  avgt   15  29.932 ± 1.002  ns/op
> 
> 
> After this patch (assemble...

Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:

  Unroll repne_scan loop for better performance.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23602/files
  - new: https://git.openjdk.org/jdk/pull/23602/files/84c7aacc..ffd2b2a9

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23602&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23602&range=01-02

  Stats: 24 lines in 1 file changed: 9 ins; 8 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/23602.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23602/head:pull/23602

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


More information about the hotspot-compiler-dev mailing list