Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8259619

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

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b06

      Backports

        Description

        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.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                shade Aleksey Shipilev
                Reporter:
                shade Aleksey Shipilev
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: