1. 07 Jul, 2022 1 commit
  2. 01 Jul, 2022 1 commit
  3. 30 Jun, 2022 2 commits
  4. 28 Jun, 2022 1 commit
    • Jakob Kummerow's avatar
      [wasm] Fix and harden all conditional tier-up checks · b9c4a849
      Jakob Kummerow authored
      This remodels the tier-up checks on loop back edges to avoid
      modifying the cache state by taking temp registers passed in
      from the caller, and not causing the instance to get cached.
      
      Additionally, this introduces FreezeCacheState scopes, which
      allow us to enforce that certain ranges don't cause any cache
      modifications. Conditional jumps require such a scope to be
      around, which should help ensure that we don't forget to add
      them to any future code we write.
      
      Drive-by cleanup: drop {pinned} lists from a few Load helper
      functions. They don't allocate registers (and shouldn't), so
      they don't need to know about pinned registers.
      
      Fixed: chromium:1339321
      Change-Id: I1c7660418a85259e96c5e0dcfeaf12dab2114e8c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3724787Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81411}
      b9c4a849
  5. 21 Jun, 2022 2 commits
    • Jakob Kummerow's avatar
      Reland "[wasm] Fix tier-up budget tracking for recursive calls" · 6f398553
      Jakob Kummerow authored
      This is a reland of commit 15f372af
      
      Change since revert: TSan fix for tier-up budget reset.
      
      Original change's description:
      > [wasm] Fix tier-up budget tracking for recursive calls
      >
      > In the previous implementation, functions overwrote any budget
      > decrements caused by recursive invocations of themselves, which
      > could cause tier-up decisions for certain unlucky functions to
      > get delayed unreasonably long.
      > This patch avoids this by working with the on-instance value
      > directly instead of caching it in a stack slot. That generates
      > the same amount of Liftoff code as the status quo, but handles
      > recursive functions properly.
      > The "barista3" benchmark's peak performance improves by almost 20%.
      >
      > Bug: v8:12281
      > Change-Id: I8b487a88da99c2d22e132f2cc72bdf36aa5f6e63
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3693710
      > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#81249}
      
      Bug: v8:12281,v8:12984
      Change-Id: Ia6ce776848dc86617546ec514660c9a840484cb1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3716479Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Auto-Submit: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81281}
      6f398553
    • Michael Achenbach's avatar
      Revert "[wasm] Fix tier-up budget tracking for recursive calls" · 2864fd0f
      Michael Achenbach authored
      This reverts commit 15f372af.
      
      Reason for revert: https://crbug.com/v8/12984
      
      Original change's description:
      > [wasm] Fix tier-up budget tracking for recursive calls
      >
      > In the previous implementation, functions overwrote any budget
      > decrements caused by recursive invocations of themselves, which
      > could cause tier-up decisions for certain unlucky functions to
      > get delayed unreasonably long.
      > This patch avoids this by working with the on-instance value
      > directly instead of caching it in a stack slot. That generates
      > the same amount of Liftoff code as the status quo, but handles
      > recursive functions properly.
      > The "barista3" benchmark's peak performance improves by almost 20%.
      >
      > Bug: v8:12281
      > Change-Id: I8b487a88da99c2d22e132f2cc72bdf36aa5f6e63
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3693710
      > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#81249}
      
      Bug: v8:12281, v8:12984
      Change-Id: Ie254236785628c07ac569de16ea82a67ed5bd221
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3714247
      Auto-Submit: Michael Achenbach <machenbach@chromium.org>
      Owners-Override: Michael Achenbach <machenbach@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/main@{#81267}
      2864fd0f
  6. 20 Jun, 2022 2 commits
    • Clemens Backes's avatar
      [liftoff] Fix implicit conversion to LiftoffRegList · b84c7dbd
      Clemens Backes authored
      According to the style guide, the implicit conversion of any number of
      registers to a LiftoffRegList should not be there. This CL removes it,
      and fixes two subideal call sites to use SpillRegister (receiving a
      single register) instead of SpillOneRegister (receiving a register list
      to choose from).
      
      Plus some semantics-preserving rewrites.
      
      R=jkummerow@chromium.org
      
      Bug: chromium:1337221
      Change-Id: Id22043ac1c185bc794dbde7baa4b1d5ab7cce56e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3707286Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81250}
      b84c7dbd
    • Jakob Kummerow's avatar
      [wasm] Fix tier-up budget tracking for recursive calls · 15f372af
      Jakob Kummerow authored
      In the previous implementation, functions overwrote any budget
      decrements caused by recursive invocations of themselves, which
      could cause tier-up decisions for certain unlucky functions to
      get delayed unreasonably long.
      This patch avoids this by working with the on-instance value
      directly instead of caching it in a stack slot. That generates
      the same amount of Liftoff code as the status quo, but handles
      recursive functions properly.
      The "barista3" benchmark's peak performance improves by almost 20%.
      
      Bug: v8:12281
      Change-Id: I8b487a88da99c2d22e132f2cc72bdf36aa5f6e63
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3693710
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81249}
      15f372af
  7. 07 Jun, 2022 2 commits
  8. 02 Jun, 2022 2 commits
  9. 30 May, 2022 1 commit
  10. 24 May, 2022 1 commit
  11. 23 May, 2022 1 commit
  12. 18 May, 2022 1 commit
  13. 16 May, 2022 1 commit
  14. 13 May, 2022 1 commit
  15. 12 May, 2022 2 commits
  16. 11 May, 2022 1 commit
  17. 06 May, 2022 1 commit
  18. 20 Apr, 2022 2 commits
  19. 08 Apr, 2022 1 commit
  20. 07 Apr, 2022 1 commit
    • Jakob Kummerow's avatar
      [wasm] Count direct calls · 9ca0bfef
      Jakob Kummerow authored
      This adds feedback collection to count the number of executions of
      call_direct instructions in Liftoff code. The purpose is better
      inlining decisions in Turbofan, which are enabled by having call
      count information for all kinds of calls.
      The new feature is gated on --wasm-speculative-inlining. While
      direct calls don't need to speculate about their target, the whole
      feedback collection infrastructure depends on that flag.
      
      Bug: v8:12166
      Change-Id: Ie24a988fcea631f370188dc21e60a5fac923dd3d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571807Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79846}
      9ca0bfef
  21. 06 Apr, 2022 1 commit
    • Clemens Backes's avatar
      [wasm] Make LiftoffRegList::ForRegs a constructor · ea96bd76
      Clemens Backes authored
      The 'ForRegs' method is not needed for clarity of the code, it's pretty
      clear what to construct a register list from. Hence turn the static
      {LiftoffRegList::ForRegs} method into a constructor. This makes the code
      more concise.
      
      Also, turn the for loop into a C++17 folding expression, which might
      generate better code because the loop will automatically be unrolled.
      
      R=thibaudm@chromium.org
      
      Bug: v8:12425
      Change-Id: Ic4446f23022db5f17420303d45b9c15fa5daff60
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3572041Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79815}
      ea96bd76
  22. 16 Mar, 2022 1 commit
    • Clemens Backes's avatar
      [wasm] Fix some WASM comments and outputs · 44c02e18
      Clemens Backes authored
      In text, we should use the properly capitalized "Wasm" instead of
      "WASM". In particular for frame output, other frames typically use
      CamelCase (like "JsToWasmFrame", "ExitFrame", "InternalFrame"), so Wasm
      should do the same.
      The "0xa" comment in some assemblers is also outdated, the current tag
      we emit for StackFrame::WASM is 0x8 (0x4 shifted by one).
      
      R=jkummerow@chromium.org
      
      Bug: v8:12425
      Change-Id: Ic3e00c401b219c28b5424c82efb0f1a9df51690f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3525195Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79498}
      44c02e18
  23. 14 Mar, 2022 1 commit
  24. 24 Feb, 2022 1 commit
    • Clemens Backes's avatar
      [liftoff][x64] Fix bug in i32.atomic.sub32 · b5003a3c
      Clemens Backes authored
      {AtomicSub} on x64 first negates the {value} register, then does an
      atomic addition. For that reason, {value} should be a unique register.
      So far, we only checked that it's not used in the value stack, but we
      should also check for overlap with the destination address or the offset
      register.
      
      Drive-by: Remove unneeded handling of non-unique register index on arm,
      as that cannot happen (LiftoffCompiler ensures that the result register
      is unique).
      
      R=thibaudm@chromium.org
      
      Bug: chromium:1296876
      Change-Id: Ie6b97eec8e8dea07b0bcc644d261f47467cc5b8e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3487987Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79265}
      b5003a3c
  25. 23 Feb, 2022 1 commit
    • Jakob Gruber's avatar
      [safepoints] Various refactors · c7e47c30
      Jakob Gruber authored
      A collection of smallish cleanups and improvements for safepoints.
      
      Maintainability:
      - The class names were not very clear; move Safepoint inside
        SafepointTableBuilder to clarify that this wrapper class is used
        during codegen.
      - Rename DefinePointerSlot/DefineRegister to
        DefineTaggedStackSlot/DefineTaggedRegister for clarity.
      - Use named constants instead of -1.
      - DefineTaggedRegister has no connection to kNoDeoptIndex, remove
        the DCHECK and comment.
      - Remove the unused kNumSafepointRegisters constant + other dead code.
      - Small clarifications in CommonFrame::IterateCompiledFrame.
      - Rename has_safepoint_info to uses_safepoint_table and refactor s.t.
        `stack_slots` can be used when `uses_safepoint_table == false`. In
        this case it just returns 0.
      
      Perf:
      - During codegen, represent stack slots as a growable bit vector
        instead of a list of int indices. Extend GrowableBitVector
        functionality to support the above.
      - Track the minimum index instead of iterating all stack slots in
        all safepoints before encoding.
      
      Bug: v8:7700
      Change-Id: If409bc42c825d47fc0074fce51e3b963fd080806
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3483659Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79233}
      c7e47c30
  26. 03 Feb, 2022 1 commit
  27. 01 Feb, 2022 1 commit
  28. 31 Jan, 2022 1 commit
  29. 07 Jan, 2022 1 commit
  30. 17 Nov, 2021 1 commit
  31. 29 Oct, 2021 1 commit
  32. 07 Oct, 2021 1 commit
  33. 31 Aug, 2021 1 commit