RFR: 8290154: [JVMCI] partially implement JVMCI for RISC-V [v8]

Yadong Wang yadongwang at openjdk.org
Wed Aug 24 08:45:30 UTC 2022


On Wed, 24 Aug 2022 07:55:47 GMT, Sacha Coppey <duke at openjdk.org> wrote:

>> This patch adds a partial JVMCI implementation for RISC-V, to allow using the GraalVM Native Image RISC-V LLVM backend, which does not use JVMCI for code emission.
>> It creates the jdk.vm.ci.riscv64 and jdk.vm.ci.hotspot.riscv64 packages, as well as implements a part of jvmciCodeInstaller_riscv64.cpp. To check for correctness, it enables JVMCI code installation tests on RISC-V. More testing is performed in Native Image.
>
> Sacha Coppey has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add a comments for the change in deoptimization.hpp

src/hotspot/cpu/riscv/jvmciCodeInstaller_riscv.cpp line 119:

> 117:     }
> 118:     jint vectorRegisterNumber = floatRegisterNumber - FloatRegisterImpl::number_of_registers;
> 119:     if (vectorRegisterNumber >= 0 && vectorRegisterNumber - VectorRegisterImpl::number_of_registers) {

Maybe you want to check if `vectorRegisterNumber < VectorRegisterImpl::number_of_registers`.

src/hotspot/share/runtime/deoptimization.hpp line 348:

> 346:   // incorrectly if the nmethod is compiled by JVMCI, causing the
> 347:   // method to return a negative index which is not -1
> 348:   static int RISCV64_ONLY(__attribute__ ((noinline))) trap_request_index(int trap_request) {

I don't understand this change, because the semantics should be the same whether inline or not. What's the difference  in the generated code by the c/c++ compiler?

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

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



More information about the build-dev mailing list