1. 07 Oct, 2020 1 commit
    • Ross McIlroy's avatar
      [TurboProp] Add support for deferred block spills in fast reg alloc · 4a601911
      Ross McIlroy authored
      Adds support for avoiding spills in non-deferred blocks by instead
      restricting the spill ranges to deferred blocks if the virtual
      register is only spilled in deferred blocks.
      
      It does this by tracking registers that reach the exit point of deferred
      blocks and spilling them them pre-emptively in the deferred block while
      treating them as committed from the point of view of the non-deferred
      blocks. We also now track whether virtual registers need to be spilled
      at their SSA definition point (where they are output by an instruction),
      or can instead be spilled at the entry to deferred blocks for use as
      spill slots within those deferred blocks. In both cases, the tracking
      of these deferred spills is kept as a pending operation until the
      allocator confirms that adding these spills will avoid spills in the
      non-deferred pathways, to avoid adding unnecessary extra spills in
      deferred blocks.
      
      BUG=v8:9684
      
      Change-Id: Ib151e795567f0e4e7f95538415a8cc117d235b64
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440603
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70374}
      4a601911
  2. 28 Jul, 2020 1 commit
    • Ross McIlroy's avatar
      [TurboProp] Add reference map population to fast reg alloc. · e9a37bf8
      Ross McIlroy authored
      Adds support for populating reference maps to the fast
      register allocator. In order to calculate whether a stack slot
      is live at a given instruction, we use the dominator tree to
      build a bitmap of blocks which are dominated by each block.
      A variable's spill operand is classed as alive for any blocks that are
      dominated by the block it was defined in, until the instruction index
      of the spill operand's last use. As such, it may be classified as live
      down a branch where the spill operand is never used, however it is safe
      since the spill slot won't be re-allocated until after it's last-use
      instruction index in any case.
      
      BUG=v8:9684
      
      Change-Id: I772374599ef916f57d82d468f66429e32c712ddf
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298008
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69108}
      e9a37bf8
  3. 10 Jul, 2020 1 commit
  4. 12 Nov, 2019 2 commits
  5. 31 Oct, 2019 1 commit
  6. 23 May, 2019 1 commit
  7. 04 Apr, 2019 1 commit
  8. 18 Jan, 2019 1 commit
  9. 20 Sep, 2018 1 commit
  10. 11 Sep, 2018 1 commit
  11. 02 Feb, 2018 1 commit
  12. 26 Jun, 2017 1 commit
  13. 21 Jun, 2017 1 commit
  14. 08 Dec, 2016 1 commit
  15. 20 Sep, 2016 1 commit
  16. 08 May, 2015 1 commit
  17. 11 Feb, 2015 1 commit
  18. 06 Feb, 2015 1 commit
  19. 29 Jan, 2015 1 commit
  20. 31 Oct, 2014 1 commit
  21. 22 Aug, 2014 1 commit
  22. 20 Aug, 2014 1 commit
  23. 04 Aug, 2014 1 commit
  24. 30 Jul, 2014 1 commit
  25. 03 Jun, 2014 1 commit
  26. 29 Apr, 2014 1 commit
  27. 12 Jun, 2013 1 commit
  28. 07 Jan, 2013 1 commit
  29. 04 Jan, 2013 1 commit
  30. 22 Feb, 2012 1 commit
  31. 06 May, 2011 1 commit
  32. 03 May, 2011 1 commit
  33. 14 Apr, 2011 1 commit
  34. 18 Mar, 2011 3 commits
  35. 03 Jan, 2011 1 commit
  36. 07 Dec, 2010 2 commits