1. 12 May, 2021 1 commit
    • Manos Koukoutos's avatar
      [turbofan] Disallow floating control in wasm · 02ac71e2
      Manos Koukoutos authored
      Loop unrolling did not work properly with floating control. Seeing as
      very few spots in the wasm compiler introduced floating control, we
      decided to disallow it altogether.
      Changes:
      - When lowering 64-bit rol/ror/clz/ctz in 32-bit platforms, we use a
        diamond operator, which used to introduce floating control. This CL
        adds a control edge to these operators so that the diamond can be
        chained to that control instead.
      - During loop analysis, as an additional safety check, we check that the
        explored loop does not have floating control. Exceptionally, floating
        control pointing directly do start() is allowed.
      - Change wasm-compiler so that generated floating projections point to
        start() even after stack check patch-in.
      
      Bug: chromium:1184929, v8:11298
      Change-Id: I1ee063f5250037ae6c84d2f16b0bd8fff3923117
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2876851Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74527}
      02ac71e2
  2. 03 Mar, 2021 1 commit
  3. 01 Mar, 2021 1 commit
  4. 24 Feb, 2021 1 commit
    • Manos Koukoutos's avatar
      [wasm][turbofan] Implement loop unrolling for wasm · 40ebe845
      Manos Koukoutos authored
      Design doc: https://docs.google.com/document/d/1AsUCqslMUB6fLdnGq0ZoPk2kn50jIJAWAL77lKXXP5g/
      
      Currently, wasm loop unrolling is disabled by default. We intend to
      further investigate its compilation time cost and running time benefits
      before enabling it.
      
      Additional changes:
      - Introduce LoopFinder::FindUnnestedLoopFromHeader() as a lightweight
        loop analysis.
      - Move EliminateLoopExit into LoopPeeling and expose it.
      - Introduce loop_info_ field into WasmGraphBuildingInterface, fill it
        up in Loop().
      - Break after encountering the first loop in BuildNestedLoopExits.
      - Introduce struct WasmLoopInfo. A WasmLoopInfo vector is instantiated
        in ExecuteTurbofanWasmCompilation, passed to BuildGraphForWasmFunction
        to be filled up by WasmGraphBuildingInterface, and then passed to
        GenerateCodeForWasmFunction to be used in WasmLoopUnrollingPhase.
      - Introduce WasmLoopUnrollingPhase and insert it into the wasm
        compilation pipeline.
      - Fix an issue where exception values were not wrapped in
        WasmGraphBuilderInterface.
      - Update --wasm-loop-unrolling flag description.
      
      Bug: v8:11298
      Change-Id: I4b57cf2ea8520931f60769f843ffd57b3ca6399b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697349
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73009}
      40ebe845
  5. 06 Feb, 2021 1 commit
    • Manos Koukoutos's avatar
      [turbofan] Refactor loop peeling/analysis infrastructure for unrolling · a6e01fb9
      Manos Koukoutos authored
      In preparation of loop unrolling, we move some loop analysis
      infrastructure out of loop-peeling.{h, cc}, and implement some
      additional required functionality.
      
      Changes:
      - Implement inner_loops() in loop-analysis.h. Change some parameters
        in other functions from Loop* to (const Loop*) to accommodate this
        change.
      - Move Peeling class into loop-analysis, rename it to NodeCopier.
      - Simplify NodeCopier::CopyNodes().
      - Allow NodeCopier to produce multiple copies of the targeted Nodes.
      - Introduce LoopFinder::HasMarkedExits(). Move the implementation of
        LoopPeeling::CanPeel() there. CanPeel() is now an alias for
        HasMarkedExits().
      
      Bug: v8:11298
      Change-Id: I245b2e937393e4a78ce4d355e1290aaf6e617114
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2672019
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72555}
      a6e01fb9
  6. 07 Jan, 2021 1 commit
  7. 28 Jul, 2020 1 commit
  8. 10 Jul, 2020 1 commit
  9. 17 Jul, 2019 1 commit
  10. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2
  11. 21 Nov, 2017 1 commit
  12. 09 Aug, 2017 1 commit
  13. 20 Sep, 2016 1 commit
  14. 27 Jul, 2016 1 commit
  15. 15 Jul, 2016 1 commit
  16. 07 Apr, 2015 1 commit
  17. 11 Feb, 2015 1 commit
  18. 06 Feb, 2015 1 commit
  19. 29 Jan, 2015 1 commit
  20. 20 Jan, 2015 1 commit
  21. 19 Jan, 2015 1 commit
  22. 14 Jan, 2015 1 commit
  23. 07 Jan, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Cleanup Graph and related classes. · e53845d4
      bmeurer authored
      - Move NodeMarker to its own file, and introduce a non
        templatized base class.
      - Cleanup the include hell.
      - Sanitize the Node construction methods now that we
        got rid of that GenericNode/GenericGraph stuff.
      - Protect against NodeId overflow in Graph.
      - Various minor cleanups.
      
      TEST=cctest,mjsunit,unittests
      
      Review URL: https://codereview.chromium.org/838783002
      
      Cr-Commit-Position: refs/heads/master@{#25977}
      e53845d4
  24. 16 Dec, 2014 1 commit