1. 06 Nov, 2020 1 commit
  2. 17 Aug, 2020 1 commit
    • Seth Brenith's avatar
      Reland "[regalloc] Place spill instructions optimally" · 2f809531
      Seth Brenith authored
      This is a reland of f4548e75
      
      Original change's description:
      > [regalloc] Place spill instructions optimally
      >
      > Design doc:
      > https://docs.google.com/document/d/1n9ADWnDI-sw0OvdSmrthf61prmDqbDmQq-NSrQw2MVI/edit?usp=sharing
      >
      > Most of this change follows directly what is discussed in the design
      > document. A few other things are also changed:
      >
      > - PopulateReferenceMapsPhase is moved after ResolveControlFlowPhase so
      >   that it can make use of the decision regarding whether a value is
      >   spilled at its definition or later.
      > - SpillSlotLocator is removed. It was already somewhat confusing,
      >   because the responsibility for marking blocks as needing frames was
      >   split: in some cases they were marked by SpillSlotLocator, and in
      >   other cases they were marked by CommitSpillsInDeferredBlocks. With
      >   this change, that split responsibility would become yet more
      >   confusing if we kept SpillSlotLocator for the values that are spilled
      >   at their definition, so I propose a simpler rule that whatever code
      >   adds the spill move also marks the block.
      > - A few class definitions (LiveRangeBound, FindResult,
      >   LiveRangeBoundArray, and LiveRangeFinder) are moved without
      >   modification from register-allocator.cc to register-allocator.h so
      >   that we can refer to them from another cc file.
      >
      > Bug: v8:10606
      > Change-Id: I374a3219a5de477a53bc48117e230287eae89e72
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2285390
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69345}
      
      Bug: v8:10606
      Change-Id: I10fc1ef4b0bebb6c9f55ebdefe33e8c1e5646f0a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2352483
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69427}
      2f809531
  3. 11 Aug, 2020 2 commits
    • Bill Budge's avatar
      Revert "[regalloc] Place spill instructions optimally" · e9245e46
      Bill Budge authored
      This reverts commit f4548e75.
      
      Reason for revert: Breaks some gap resolver tests:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim/24204
      
      Original change's description:
      > [regalloc] Place spill instructions optimally
      > 
      > Design doc:
      > https://docs.google.com/document/d/1n9ADWnDI-sw0OvdSmrthf61prmDqbDmQq-NSrQw2MVI/edit?usp=sharing
      > 
      > Most of this change follows directly what is discussed in the design
      > document. A few other things are also changed:
      > 
      > - PopulateReferenceMapsPhase is moved after ResolveControlFlowPhase so
      >   that it can make use of the decision regarding whether a value is
      >   spilled at its definition or later.
      > - SpillSlotLocator is removed. It was already somewhat confusing,
      >   because the responsibility for marking blocks as needing frames was
      >   split: in some cases they were marked by SpillSlotLocator, and in
      >   other cases they were marked by CommitSpillsInDeferredBlocks. With
      >   this change, that split responsibility would become yet more
      >   confusing if we kept SpillSlotLocator for the values that are spilled
      >   at their definition, so I propose a simpler rule that whatever code
      >   adds the spill move also marks the block.
      > - A few class definitions (LiveRangeBound, FindResult,
      >   LiveRangeBoundArray, and LiveRangeFinder) are moved without
      >   modification from register-allocator.cc to register-allocator.h so
      >   that we can refer to them from another cc file.
      > 
      > Bug: v8:10606
      > Change-Id: I374a3219a5de477a53bc48117e230287eae89e72
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2285390
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69345}
      
      TBR=rmcilroy@chromium.org,seth.brenith@microsoft.com,thibaudm@chromium.org
      
      Change-Id: Ie57109a009ee7ee541a6ff6f89901d1ac99027d2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10606
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2350440Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69347}
      e9245e46
    • Seth Brenith's avatar
      [regalloc] Place spill instructions optimally · f4548e75
      Seth Brenith authored
      Design doc:
      https://docs.google.com/document/d/1n9ADWnDI-sw0OvdSmrthf61prmDqbDmQq-NSrQw2MVI/edit?usp=sharing
      
      Most of this change follows directly what is discussed in the design
      document. A few other things are also changed:
      
      - PopulateReferenceMapsPhase is moved after ResolveControlFlowPhase so
        that it can make use of the decision regarding whether a value is
        spilled at its definition or later.
      - SpillSlotLocator is removed. It was already somewhat confusing,
        because the responsibility for marking blocks as needing frames was
        split: in some cases they were marked by SpillSlotLocator, and in
        other cases they were marked by CommitSpillsInDeferredBlocks. With
        this change, that split responsibility would become yet more
        confusing if we kept SpillSlotLocator for the values that are spilled
        at their definition, so I propose a simpler rule that whatever code
        adds the spill move also marks the block.
      - A few class definitions (LiveRangeBound, FindResult,
        LiveRangeBoundArray, and LiveRangeFinder) are moved without
        modification from register-allocator.cc to register-allocator.h so
        that we can refer to them from another cc file.
      
      Bug: v8:10606
      Change-Id: I374a3219a5de477a53bc48117e230287eae89e72
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2285390
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69345}
      f4548e75