RFR: 8305959: Improve itable_stub
Aleksey Shipilev
shade at openjdk.org
Tue May 23 15:13:19 UTC 2023
On Thu, 13 Apr 2023 14:33:52 GMT, Boris Ulasevich <bulasevich at openjdk.org> wrote:
> Async profiler shows that applications spend up to 10% in itable_stubs.
>
> The current inefficiency of itable stubs is as follows. The generated itable_stub scans itable twice: first it checks if the object class is a subtype of the resolved_class, and then it finds the holder_class that implements the method. I suggest doing this in one pass: with a first loop over itable, check pointer equality to both holder_class and resolved_class. Once we have finished searching for resolved_class, continue searching for holder_class in a separate loop if it has not yet been found.
>
> This approach gives 1-10% improvement on the synthetic benchmarks and 3% improvement on Naive Bayes benchmark from the Renaissance Benchmark Suite (Intel Xeon X5675).
The performance improvements for the interface calls look impressive.
I have a major suggestion on readability, see [8305959-1.patch](https://github.com/openjdk/jdk/files/11543559/8305959-1.patch). It renames the labels, renames the loops, collects the comments together, etc. It passes `runtime/InvocationTests`, but I have not tested anything else.
How was this change tested, by the way?
Should this also be "x86: Improve itable_stub", seeing how this is x86-specific?
-------------
Changes requested by shade (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/13460#pullrequestreview-1439568378
More information about the hotspot-dev
mailing list