RFR: 8285487: AArch64: Do not generate unneeded trampolines for runtime calls [v5]
Vladimir Kozlov
kvn at openjdk.org
Thu Aug 11 20:47:59 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
Good.
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 878:
> 876: // Runtime calls are calls of a non-compiled method.
> 877: // Non-compiled methods stay forever in CodeCache.
> 878: // We check whether the longest possible branch is within the branch range.
I think you should add clarification "non-compiled method (stubs, adapters)".
-------------
PR: https://git.openjdk.org/jdk/pull/8403
More information about the hotspot-compiler-dev
mailing list