[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