RFR: 8256056: Deoptimization stub doesn't save vector registers on x86
Vladimir Ivanov
vlivanov at openjdk.java.net
Mon Nov 9 19:17:02 UTC 2020
Deoptimization stub doesn't save vector registers on x86 and it may break vector rematerialization when a vector value (produced through Vector API) ends up in a register (and not spilled on stack).
The fix unconditionally saves all wide vector registers when going through deopt stub. If there are any performance concerns with that, it's possible to introduce a dedicated variant and choose between 2 versions when patching nmethods (like what happens with safepoint stubs). But deoptimization is already quite expensive to save much on that, so I decided to keep things as is.
As a cleanup, I made `save_vectors` parameter explicit to make the intentions clearer.
Testing (with some other relevant patches):
- [x] jdk/incubator/vector w/ -XX:+DeoptimizeALot and -XX:UseAVX=3 on AVX512-capable hardware
- [x] hs-precheckin-comp, hs-tier1, hs-tier2
-------------
Commit messages:
- Save save vector registers in deopt stub.
Changes: https://git.openjdk.java.net/jdk/pull/1134/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1134&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8256056
Stats: 16 lines in 1 file changed: 5 ins; 1 del; 10 mod
Patch: https://git.openjdk.java.net/jdk/pull/1134.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1134/head:pull/1134
PR: https://git.openjdk.java.net/jdk/pull/1134
More information about the hotspot-compiler-dev
mailing list