RFR: 8285487: AArch64: Do not generate unneeded trampolines for runtime calls [v5]

Evgeny Astigeevich duke at openjdk.org
Wed Aug 10 21:38:32 UTC 2022


On Wed, 10 Aug 2022 21:18:11 GMT, Evgeny Astigeevich <duke at openjdk.org> wrote:

>> Runtime calls are calls of non-compiled methods. Non-compiled methods stay forever in CodeCache. If they are always within the branch range, they don't need trampolines.
>> 
>> This PR adds `is_always_within_branch_range(Address entry)`.
>> 
>> Results from DaCapo: the total number of eliminated trampolines per a benchmark run
>> 
>> 
>> +----------+--------+
>> | avrora   |  15491 |
>> | batik    |  75837 |
>> | biojava  |  13927 |
>> | eclipse  | 414143 |
>> | fop      | 119267 |
>> | graphchi |   7665 |
>> | jme      |   8279 |
>> | luindex  |  56061 |
>> | lusearch |  50277 |
>> | pmd      | 132719 |
>> | sunflow  |  10689 |
>> | tomcat   | 186967 |
>> | xalan    |  50349 |
>> | zxing    |  41497 |
>> +----------+--------+
>> 
>> 
>> 
>> Testing:
>> - `tier1`...`tier2`: Passed
>> - `compiler/c2/aarch64/TestTrampoline.java`: Passed
>> 
>> Note: `compiler/c2/aarch64/TestTrampoline.java` requires the release build. This is because debug builds have the branch range set to 2M which causes always generation of trampolines.
>
> Evgeny Astigeevich has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Combine @requires; Change is_always_reachable to is_always_within_branch_range

@theRealAph @navyxliu @vnkozlov @bulasevich I have updated the PR. Could you please have a look?

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

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


More information about the hotspot-dev mailing list