1. 01 Jun, 2021 1 commit
  2. 22 Mar, 2021 1 commit
  3. 08 Oct, 2019 1 commit
  4. 30 Jan, 2019 1 commit
  5. 03 Jan, 2019 2 commits
    • Clemens Hammacher's avatar
      [Liftoff] Keep consistent register mapping in non-merged regions · 20b63300
      Clemens Hammacher authored
      We currently de-duplicate used registers also in regions which do not
      need merging. In those regions though it can never happen that we need
      to pass different values from any merge input. Apart from introducing
      unnecessary register moves, this also causes a DCHECK to fail, because
      we might later want to merge back different registers into one.
      
      Assume this initial stack state (where each letter is a register):
      [A B B C]
      If in any child block the two Bs get de-duplicated so something like
      [A B D C]
      then we run into trouble when merging back this state into the parent
      state, because both B and D would need to be put into B.
      In this case we can statically infer that B and D must hold the same
      value anyway, but having this situation does not make much sense in the
      first place, so the DCHECK fires correctly.
      
      R=titzer@chromium.org
      
      Bug: v8:8423, chromium:917412
      Change-Id: I24c36b062e04a134cf7051725afab98126753f31
      Reviewed-on: https://chromium-review.googlesource.com/c/1392190
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58522}
      20b63300
    • Clemens Hammacher's avatar
      [Liftoff] Fix moving stack values · 14faced4
      Clemens Hammacher authored
      On x64 the {kScratchRegister} cannot be held in a {LiftoffRegister},
      since it is not a valid cache register. Also, the code unnecessarily
      checked whether there is an unused cache register, but then didn't use
      it. Simplify the logic to always use the scratch register, just
      distinguish between 4-byte and 8-byte moves.
      On ia32 we did not move 64-bit values correctly if we didn't have
      unused registers and needed to move via the stack.
      
      R=titzer@chromium.org
      
      Bug: v8:6600, chromium:917588, chromium:917450
      Change-Id: I0bbe946c6ac8fca62f85711ae47afdac9c02ae6b
      Reviewed-on: https://chromium-review.googlesource.com/c/1391755Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58521}
      14faced4