RFR: 8307352: AARCH64: Improve itable_stub [v6]

Boris Ulasevich bulasevich at openjdk.org
Mon Aug 7 18:56:36 UTC 2023


> This is a change for AARCH similar to https://github.com/openjdk/jdk/pull/13460 
> 
> The change replaces two separate iterations over the itable with a new algorithm consisting of two loops. First, we look for a match with resolved_klass, checking for a match with holder_klass along the way. Then we continue iterating (not starting over) the itable using the second loop, checking only for a match with holder_klass.
> 
> InterfaceCalls openjdk benchmark performance results on A53, A72, Neoverse N1 and V1 micro-architectures:
> 
> 
> Cortex-A53 (Pi 3 Model B Rev 1.2)
> 
> test1stInt2Types    37.5      37.358     0.38
> test1stInt3Types   160.166   148.04      8.19
> test1stInt5Types   158.131   147.955     6.88
> test2ndInt2Types    52.634    53.291    -1.23
> test2ndInt3Types   201.39    181.603    10.90
> test2ndInt5Types   195.722   176.707    10.76
> testIfaceCall      157.453   140.498    12.07
> testIfaceExtCall   175.46    154.351    13.68
> testMonomorphic     32.052    32.039     0.04
>                                  AVG:    6.85
> 
> Cortex-A72 (Pi 4 Model B Rev 1.2)
> 
> test1stInt2Types    27.4796   27.4738    0.02
> test1stInt3Types    66.0085   64.9374    1.65
> test1stInt5Types    67.9812   66.2316    2.64
> test2ndInt2Types    32.0581   32.062    -0.01
> test2ndInt3Types    68.2715   65.6643    3.97
> test2ndInt5Types    68.1012   65.8024    3.49
> testIfaceCall       64.0684   64.1811   -0.18
> testIfaceExtCall    91.6226   81.5867   12.30
> testMonomorphic     26.7161   26.7142    0.01
>                                  AVG:    2.66
> 
> Neoverse N1 (m6g.metal)
> 
> test1stInt2Types     2.9104    2.9086    0.06
> test1stInt3Types    10.9642   10.2909    6.54
> test1stInt5Types    10.9607   10.2856    6.56
> test2ndInt2Types     3.3410    3.3478   -0.20
> test2ndInt3Types    12.3291   11.3089    9.02
> test2ndInt5Types    12.328    11.2704    9.38
> testIfaceCall       11.0598   10.3657    6.70
> testIfaceExtCall    13.0692   11.2826   15.84
> testMonomorphic      2.2354    2.2341    0.06
>                                  AVG:    6.00
> 
> Neoverse V1 (c7g.2xlarge)
> 
> test1stInt2Types    2.2317     2.2320   -0.01
> test1stInt3Types    6.6884     6.1911    8.03
> test1stInt5Types    6.7334     6.2193    8.27
> test2ndInt2Types    2.4002     2.4013   -0.04
> test2ndInt3Types    7.9603     7.0372   13.12
> test2ndInt5Types    7.9532     7.0474   12.85
> testIfaceCall       6.7028     6.3272    5.94
> testIfaceExtCall    8.3253     6.9416   19.93
> testMonomorphic     1.2446     1.2544   -0.79
>                                  AVG:    7.48 
> 
> 
> Testing...

Boris Ulasevich has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision:

  rework loop_scan_resolved_entry cycle as proposed

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/13792/files
  - new: https://git.openjdk.org/jdk/pull/13792/files/93539e29..63b7d369

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=13792&range=05
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13792&range=04-05

  Stats: 10 lines in 1 file changed: 4 ins; 3 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/13792.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13792/head:pull/13792

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


More information about the hotspot-dev mailing list