Integrated: 8259619: C1: 3-arg StubAssembler::call_RT stack-use condition is incorrect

Aleksey Shipilev shade at openjdk.java.net
Wed Jan 13 12:33:58 UTC 2021


On Tue, 12 Jan 2021 12:21:15 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> SonarCould instance reports this code smell in c1_Runtime_x86.cpp: Identical sub-expressions on both sides of operator "||"
> 
> int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2, Register arg3) {
> #ifdef _LP64
>   // if there is any conflict use the stack
>   if (arg1 == c_rarg2 || arg1 == c_rarg3 ||
>       arg2 == c_rarg1 || arg1 == c_rarg3 ||
>       arg3 == c_rarg1 || arg1 == c_rarg2) { <---- HERE
>     push(arg3);
>     push(arg2);
>     push(arg1);
>     pop(c_rarg1);
>     pop(c_rarg2);
>     pop(c_rarg3);
>   } else {
>     mov(c_rarg1, arg1);
>     mov(c_rarg2, arg2);
>     mov(c_rarg3, arg3);
>   }
> 
> It seems obvious that the right column in the condition should have been `arg1`, `arg2`, `arg3`.
> 
> Additional testing:
>  - [x] Linux x86_64 `tier1`

This pull request has now been integrated.

Changeset: ce945120
Author:    Aleksey Shipilev <shade at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/ce945120
Stats:     4 lines in 2 files changed: 0 ins; 0 del; 4 mod

8259619: C1: 3-arg StubAssembler::call_RT stack-use condition is incorrect

Reviewed-by: chagedorn, kvn

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

PR: https://git.openjdk.java.net/jdk/pull/2048


More information about the hotspot-compiler-dev mailing list