[11u] RFR (S) 8253048: AArch64: When CallLeaf, no need to preserve callee-saved registers in caller
Dmitry Chuyko
dmitry.chuyko at bell-sw.com
Tue May 18 14:48:19 UTC 2021
Hello,
Original RFE: https://bugs.openjdk.java.net/browse/JDK-8253048
Preconditions are met in 11u: stub genertor logic is to "save the bottom
64 bits of each value stored in v8-v15; it is the responsibility of the
caller to preserve larger values.", add_call_kills() logic is present.
Original patch does not apply cleanly (JDK-8231441 - initial SVE - is
not in 11u, some other changes as well). But it was rather simply
reproduced:
src/hotspot/cpu/aarch64/aarch64.ad
'reg_def V<8-15>, V<8-15>_H' are made 'SOC, SOE...' instead of 'SOC, SOC...'
src/hotspot/cpu/aarch64/macroAssembler_aarch64_trig.cpp
Replaced v10 usages by v24.
No other references of v8-v15 in macroAssembler-aarch64*. In
assembler_aarch64.cpp there are still usages generated by
aarch64-asmtest.py.
11u webrev: http://cr.openjdk.java.net/~dchuyko/8253048/webrev.11u.00/
Testing: tier1, tier2. Opto assembly check for the test [1] from
original review shows 'stack bang size=48' -> 'stack bang size=32'
around nanoTime call.
[1] http://cr.openjdk.java.net/~jzhu/8253048/Test.java
--
Thanks,
-Dmitry
More information about the jdk-updates-dev
mailing list