1. 06 Nov, 2020 1 commit
  2. 28 Oct, 2019 1 commit
  3. 23 Oct, 2019 1 commit
    • Ross McIlroy's avatar
      [TurboProp] Add the ability for GraphAssembler to update basic blocks. · 0c0042cc
      Ross McIlroy authored
      Adds the ability for the GraphAssembler to operate on, and maintain, a
      scheduled graph. This will be used by TurboProp to maintain the initial
      schedule created before effect-control-linearization, by updating this schedule
      during effect-control, select and memory lowering stages rather than doing a
      later reschedule.
      
      In order to do this, an internal BlockUpdater is added to GraphAssembler,
      which is enabled by passing the schedule to the GraphAssembler. The
      GraphAssembler is modified to call into the block updater when nodes are added
      and updates the schedule with new basic blocks when new control flow is updated.
      
      BUG=v8:9684
      
      Change-Id: I6d428ad21d869c472bb20f43cc8caf44722f090a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1841355
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64519}
      0c0042cc
  4. 30 Jul, 2019 1 commit
  5. 24 May, 2019 1 commit
  6. 29 Mar, 2019 1 commit
  7. 04 Oct, 2018 1 commit
  8. 01 Oct, 2018 1 commit
  9. 20 Mar, 2018 1 commit
    • Daniel Clifford's avatar
      Ensure CSA-generated code can handle one-input phis · a5f1d5d4
      Daniel Clifford authored
      In general, TurboFan doesn't encounter phi nodes with only a single
      data input in the backend. However, CSA-based builtins (especially
      auto-generated ones, e.g. from Torque), may contain single-input phi nodes,
      although outside the auto-generated case this doesn't happen much in practice.
      
      Single input phi nodes (i.e. phis in blocks with one predecessor) don't have
      any side effects and are essentially useless and harmless, but to avoid problems
      in the backend of TurboFan (whose SSA deconstruction disallows control flow
      splits that continue to blocks with phis), this CL tweaks the existing
      CSA-only control flow and graph sanitization in the CSA path to ensure
      no no-op phis.
      
      Change-Id: I109f4dc6cde5ad1794585a09609a230b1848e0d5
      Reviewed-on: https://chromium-review.googlesource.com/963711Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52056}
      a5f1d5d4
  10. 18 May, 2017 1 commit
    • Mircea Trofin's avatar
      Move phis, if any, when ensuring deferred blocks. · 8038e5ca
      Mircea Trofin authored
      We use Schedule::EnsureDeferredCodeSingleEntryPoint as a helper for 
      hand-crafted builtin code, to ensure deferred code isn't entered from a
      mix of deferred and non-deferred code (invariant required for hot/cold
      allocation, or "splintering").
      
      When we create a "merger" block, it may be the case that the original 
      block had a few phi operands. Those need to be moved as well.
      
      This bug was uncovered by both v8:6390, and, earlier, by v8:5998. We 
      fixed the earlier one by authoring a the builtin to avoid the need for
      EnsureDeferredCodeSingleEntryPoint. I proposed earlier an alternative 
      where we'd replace the Ensure... method with a Verify, and throw early
      when the builtin is assembled, however, we may want to maintain the 
      slightly higher level DSL for authoring builtins, and perform such 
      graph adjustments for the lower level constraints afterwards, hence 
      this current CL.
      
      Bug: v8:5998 v8:6390
      Change-Id: Ia3143f7a66904fe480d8edb5b52bf915b8d185dc
      Reviewed-on: https://chromium-review.googlesource.com/505264
      Commit-Queue: Mircea Trofin <mtrofin@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45387}
      8038e5ca
  11. 15 May, 2017 1 commit
  12. 06 Apr, 2017 1 commit
  13. 17 Oct, 2016 1 commit
  14. 20 Sep, 2016 1 commit
  15. 23 Apr, 2016 1 commit
    • mtrofin's avatar
      [turbofan] Single entry into deferred · 5ae587cf
      mtrofin authored
      If a deferred block has multiple predecessors, they have to be
      all deferred. Otherwise, we can run into a situation where if a range
      that spills only in deferred blocks inserts its spill in the block, and
      other ranges need moves inserted by ResolveControlFlow in the predecessors,
      the register of the range spilled in the deferred block may be clobbered.
      
      To avoid that, when a deferred block has multiple predecessors, and some
      are not deferred, we add a non-deferred block to collect all such edges.
      
      This CL addresses the validator assertion failure the referenced issue, as well
      as the greedy allocator failure - which was caused by the situation described
      above.
      
      BUG=v8:4940
      LOG=n
      
      Review URL: https://codereview.chromium.org/1912093005
      
      Cr-Commit-Position: refs/heads/master@{#35742}
      5ae587cf
  16. 23 Mar, 2016 1 commit
  17. 11 Jan, 2016 1 commit
  18. 05 May, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Fix tail call optimization. · d21de2a4
      bmeurer authored
      Tail calls are matched on the graph, with a dedicated tail call
      optimization that is actually testable. The instruction selection can
      still fall back to a regular if the platform constraints don't allow to
      emit a tail call (i.e. the return locations of caller and callee differ
      or the callee takes non-register parameters, which is a restriction that
      will be removed in the future).
      
      Also explicitly limit tail call optimization to stubs for now and drop
      the global flag.
      
      BUG=v8:4076
      LOG=n
      
      Review URL: https://codereview.chromium.org/1114163005
      
      Cr-Commit-Position: refs/heads/master@{#28219}
      d21de2a4
  19. 20 Apr, 2015 1 commit
  20. 04 Mar, 2015 1 commit
  21. 25 Feb, 2015 1 commit
  22. 20 Feb, 2015 1 commit
  23. 17 Feb, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Optimize certain chains of Branch into a Switch. · acd9c46c
      bmeurer authored
      This adds a new ControlFlowOptimizer that - for now - recognizes chains
      of Branches generated by the SwitchBuilder for a subset of javascript
      switches into Switch nodes. Those Switch nodes are then lowered to
      either table or lookup switches.
      
      Also rename Case to IfValue (and introduce IfDefault) for consistency.
      
      BUG=v8:3872
      LOG=n
      
      Review URL: https://codereview.chromium.org/931623002
      
      Cr-Commit-Position: refs/heads/master@{#26691}
      acd9c46c
  24. 09 Feb, 2015 1 commit
  25. 23 Jan, 2015 2 commits
  26. 22 Jan, 2015 1 commit
  27. 17 Dec, 2014 1 commit
  28. 26 Nov, 2014 3 commits
  29. 06 Nov, 2014 1 commit
  30. 05 Nov, 2014 1 commit
  31. 27 Oct, 2014 1 commit
  32. 24 Oct, 2014 1 commit
  33. 22 Oct, 2014 1 commit
  34. 20 Oct, 2014 2 commits
  35. 14 Oct, 2014 2 commits