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

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

XMLWordPrintable

    • b06

        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.

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

                Created:
                Updated:
                Resolved: