RFR: 8354899: Reduce overhead associated with type switches [v2]

Adam Sotona asotona at openjdk.org
Wed Apr 23 09:49:51 UTC 2025


On Tue, 22 Apr 2025 17:20:15 GMT, Chen Liang <liach at openjdk.org> wrote:

>> The downcallHandle method in Linker has a complex implementation, and type switches is triggered in multiple places in that handle.
>> 
>> After bytestacks analysis of a simple program that links the native implementation of Class::forName0, it turns out that:
>> 1. there are a few missed usages of type switch in ClassFile API
>> 2. type switch can speed up generation by using explicit stack maps, as stack map gen is over 50% of the generation instructions because the switch is branch-heavy, but the frames are actually simple.
>> 
>> These two combined are not that significant in the overall overhead of downcallHandle, but would be helpful for other workloads.
>
> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
> 
>  - Rollback classfile boot speed changes
>  - Merge branch 'master' of https://github.com/openjdk/jdk into fix/switch-gen-speed
>  - Fix adding potentially unbound labels
>  - 8354899: Reduce overhead associated with type switches

I like that the performance of the Class-File API can be improved in critical use cases like this, even though we don't 100% eat our own dog food.

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

Marked as reviewed by asotona (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24705#pullrequestreview-2786692967


More information about the core-libs-dev mailing list