[riscv-port] RFR: 8277883: riscv: Fix a temp register usage in eden_allocate

Fei Yang fyang at openjdk.java.net
Mon Nov 29 07:50:31 UTC 2021


On Mon, 29 Nov 2021 03:43:32 GMT, zhengxiaolinX <duke at openjdk.java.net> wrote:

> Hi team,
> 
> A trivial fix for a small C1 crash - this issue could be directly reproduced by using `java -XX:+UseSerialGC -XX:-UseTLAB -XX:TieredStopAtLevel=1`. The reason is simple: the eden_allocate uses t2 as a register and zaps it, whereas C1 will use it as a register allocation candidate, leading to a crash. In this function, t0 never gets a use so we can use it safely. Tested in all cases. [The original patch](https://github.com/riscv-collab/riscv-openjdk/pull/15)
> 
> Thanks,
> Xiaolin

Changes requested by fyang (Lead).

src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp line 182:

> 180:     __ bind(retry);
> 181: 
> 182:     Register tmp = t0;

No need to introduce local variable "tmp" here. I think we can use t0 directly here.

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

PR: https://git.openjdk.java.net/riscv-port/pull/16


More information about the riscv-port-dev mailing list