RFR: 8293100: RISC-V: Need to save and restore callee-saved FloatRegisters in StubGenerator::generate_call_stub

Vladimir Kempik vkempik at openjdk.org
Thu Sep 1 07:04:08 UTC 2022


On Wed, 31 Aug 2022 08:47:50 GMT, Xiaolin Zheng <xlinzheng at openjdk.org> wrote:

> Hi team,
> 
> 1. Tests described in JDK-8293100 are failed, for callee-saved float registers used in C++ code are observed being killed after entering the Java world since callee-saved float registers are unfortunately missed to be saved in `StubGenerator::generate_call_stub()`. So the phenomenon presented in the failed tests seems to be weird.
> 
> 2. This patch also fixes some typos in `vmreg_riscv.cpp` when debugging the same issue:
> (before)
> ![140D1DC7-39AD-4D5E-ABDE-38AACB658E3F](https://user-images.githubusercontent.com/38156692/187642108-9b3c5b81-f753-4e02-8a71-1baa984f1c74.png)
> This one seems not right, either; and it also gets fixed in this patch:
> (after)
> ![6374B608-F574-4883-9DB5-D0525BE2536A](https://user-images.githubusercontent.com/38156692/187642140-43d0647a-0ae6-4e11-951e-d90b239bd75a.png)
> 
> 3. Also, branch nodes for float registers in OptoAssembly didn't show their destination blocks. This patch adds a little enhancement for those.
> 
> Hotspot tier1 has passed both on my board and qemu, and `vmTestbase/nsk/stress` tests failed before have passed as well.
> The test process on the board is slow and I am testing the remaining but I consider this as ready for review.
> 
> Best,
> Xiaolin

vmTestbase/nsk/stress/jni/jnistress002.java  now passes with this patch
Running now full tier4:hotspot ( which includes vmTestbase), will report on results later

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

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


More information about the hotspot-dev mailing list