1. 13 May, 2019 1 commit
  2. 07 May, 2019 1 commit
  3. 06 May, 2019 1 commit
  4. 03 May, 2019 2 commits
  5. 29 Apr, 2019 1 commit
    • Clemens Hammacher's avatar
      [cleanup] Use Vector::begin instead of Vector::start · 4b0f9c85
      Clemens Hammacher authored
      Our {Vector} template provides both {start} and {begin} methods. They
      return exactly the same value. Since the {begin} method is needed for
      iteration, and is also what standard containers provide, this CL
      switches all uses of the {start} method to use {begin} instead.
      
      Patchset 1 was auto-generated by using this clang AST matcher:
          callExpr(
              callee(
                cxxMethodDecl(
                  hasName("start"),
                  ofClass(hasName("v8::internal::Vector")))
              ),
              argumentCountIs(0))
      
      Patchset 2 was created by running clang-format. Patchset 3 then
      removes the now unused {Vector::start} method.
      
      R=jkummerow@chromium.org
      TBR=mstarzinger@chromium.org,yangguo@chromium.org,verwaest@chromium.org
      
      Bug: v8:9183
      Change-Id: Id9f01c92870872556e2bb3f6d5667463b0e3e5c6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587381Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61081}
      4b0f9c85
  6. 24 Apr, 2019 1 commit
  7. 21 Mar, 2019 1 commit
    • Andreas Haas's avatar
      Reland: [wasm][anyref] Add support of call-indirect for multiple tables · 2d9ec0a4
      Andreas Haas authored
      The reason for the revert was that Liftoff did not bail out on indirect
      calls to tables other than table 0. Whenever the Liftoff code got
      executed, the test would fail.
      
      Original message:
      With this CL it is possible to use any anyfunc table in call-indirect,
      not just the first table.
      
      The current implementation is based on runtime calls. This is just an
      initial implementation which should be replaced by a
      dispatch-table-based eventually. However, this implementation allows
      us to move forward with the anyref proposal implementation.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:7581
      Change-Id: Iedd56ee7acb281441bca32ffd3dc7157203ee1ac
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532072
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Auto-Submit: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60382}
      2d9ec0a4
  8. 20 Mar, 2019 2 commits
  9. 07 Mar, 2019 1 commit
  10. 14 Feb, 2019 1 commit
  11. 12 Feb, 2019 1 commit
    • Andreas Haas's avatar
      [wasm] Generate code for the table.get and table.set instructions · 01dc5707
      Andreas Haas authored
      This CL contains the following changes:
      (1) Allocate memory for WasmTables in the WasmInstance.
          - We extend the WasmInstance by a FixedArray which stores
            references to the WasmTables.
      (2) Rename the name of the backing store of WasmTables from `functions`
          to `elements`.
          - The name `functions` just does not fit anyref tables.
      (3) Generate code with TurboFan for table.get and table.set.
      (4) Extend wasm-module-builder.js to be able to generate modules with
          multiple tables.
      (5) Add  mjsunit tests to test table.get and table.set.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:7581
      Change-Id: I44af4838ee7a37b394841a2f673ecae5734a4d1c
      Reviewed-on: https://chromium-review.googlesource.com/c/1463519
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59529}
      01dc5707
  12. 07 Feb, 2019 1 commit
  13. 31 Jan, 2019 2 commits
  14. 25 Jan, 2019 1 commit
  15. 23 Jan, 2019 1 commit
  16. 17 Jan, 2019 1 commit
    • Clemens Hammacher's avatar
      [wasm] Remove reachability checks from TF backend · 314da8ee
      Clemens Hammacher authored
      The function body decoder already tracks reachability and only calls
      the backend for reachable code. Thus the checks in the TF backend can
      be skipped.
      Note that there was already a DCHECK in place that checks whether
      {SsaEnv::reached()} always returns true. This was to give fuzzers a
      chance to prove the reachability analysis in the function body decoder
      wrong. Since this did not happen, we can not remove the {reached()}
      method from SsaEnv, since it always returned true anyway.
      
      R=titzer@chromium.org
      
      Bug: v8:8423, v8:8611
      Change-Id: I2336aa7a092e381e3d94d87051b6e14db0dbab99
      Reviewed-on: https://chromium-review.googlesource.com/c/1415493Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58871}
      314da8ee
  17. 16 Jan, 2019 1 commit
  18. 15 Jan, 2019 1 commit
  19. 14 Jan, 2019 1 commit
    • Ben L. Titzer's avatar
      [wasm] Add runtime call plumbing for Table operations. · 6d3d8f7b
      Ben L. Titzer authored
      This CL adds two new runtime calls for table operations:
        - Runtime_WasmTableInit
        - Runtime_WasmTableCopy
      
      These runtime calls (will) implement the semantics for the corresponding
      bytecodes from the bulk memory proposal. The actual implementation
      of these runtime calls will be done in further CLs.
      
      The third table operation, table.drop, will be implemented with inline
      code, similar to memory.drop. This is also be done in a further CL.
      
      R=mstarzinger@chromium.org
      CC=​binji@chromium.org
      BUG=v8:7747
      
      Change-Id: I498aa054329baf9f72ae55d245b12c3ccd4157b7
      Reviewed-on: https://chromium-review.googlesource.com/c/1408994
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58786}
      6d3d8f7b
  20. 21 Dec, 2018 1 commit
  21. 20 Dec, 2018 1 commit
  22. 19 Dec, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Deprecate reachability tracking in SsaEnv · b534e00e
      Clemens Hammacher authored
      Reachability is already being tracked in the function body decoder.
      This CL adds a DCHECK that the reachability tracked in the SsaEnv
      matches the reachability tracked in the function body decoder. Most of
      our methods will only be called for reachable code anyway.
      For exceptions, we still track reachability explicitly for now in the
      wasm graph builder, this can be refactored in the future by improving
      reachability tracking for catch blocks in the function body decoder.
      
      If this DCHECK survives fuzzing for a few days, we can remove code that
      handles unreachable code in graph-building-interface.cc.
      
      R=herhut@chromium.org
      
      Bug: v8:8423, v8:8611
      Change-Id: I0fb375c99497352aad396816566883fe234ca0ac
      Reviewed-on: https://chromium-review.googlesource.com/c/1384089Reviewed-by: 's avatarStephan Herhut <herhut@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58368}
      b534e00e
  23. 12 Dec, 2018 3 commits
  24. 11 Dec, 2018 3 commits
  25. 10 Dec, 2018 2 commits
  26. 04 Dec, 2018 3 commits
    • Clemens Hammacher's avatar
      Reland "[wasm][liftoff] Optimize one-armed ifs" · 7768b245
      Clemens Hammacher authored
      This is a reland of c2aaf0a6
      
      Original change's description:
      > [wasm][liftoff] Optimize one-armed ifs
      > 
      > Do not implement one-armed ifs by emulating an empty else branch. In
      > Liftoff, we can generate better code and save compile time by handling
      > this specially. If the merge point at the end of the if is not reached
      > by the if-branch, we do not need to generate any merge code.
      > 
      > R=titzer@chromium.org
      > 
      > Bug: v8:6600, v8:8423
      > Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
      > Reviewed-on: https://chromium-review.googlesource.com/c/1356508
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57968}
      
      Bug: v8:6600, v8:8423
      Change-Id: I6d5eea9f860486768779a33bf6bd7b87cbfc2af0
      Reviewed-on: https://chromium-review.googlesource.com/c/1361040Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58024}
      7768b245
    • Clemens Hammacher's avatar
      [wasm] Simplify type checking for merges · 1fba4b7c
      Clemens Hammacher authored
      Improve readability by avoiding a helper method. Just read from the
      stack directly.
      
      R=titzer@chromium.org
      
      Change-Id: I38c944fac45c721f328a2b7bec3a3f4602f05c05
      Reviewed-on: https://chromium-review.googlesource.com/c/1360572
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58023}
      1fba4b7c
    • Clemens Hammacher's avatar
      Revert "[wasm][liftoff] Optimize one-armed ifs" · 0536ee43
      Clemens Hammacher authored
      This reverts commit c2aaf0a6.
      
      Reason for revert: Benchmarks fail, and ClusterFuzz is not happy (issue 911406, issue 911271)
      
      Original change's description:
      > [wasm][liftoff] Optimize one-armed ifs
      > 
      > Do not implement one-armed ifs by emulating an empty else branch. In
      > Liftoff, we can generate better code and save compile time by handling
      > this specially. If the merge point at the end of the if is not reached
      > by the if-branch, we do not need to generate any merge code.
      > 
      > R=​titzer@chromium.org
      > 
      > Bug: v8:6600, v8:8423
      > Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
      > Reviewed-on: https://chromium-review.googlesource.com/c/1356508
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57968}
      
      TBR=titzer@chromium.org,clemensh@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:6600, v8:8423
      Change-Id: I5cb3b069f40e34f34da4013e666f6ff293752567
      Reviewed-on: https://chromium-review.googlesource.com/c/1360633Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58012}
      0536ee43
  27. 30 Nov, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm][liftoff] Optimize one-armed ifs · c2aaf0a6
      Clemens Hammacher authored
      Do not implement one-armed ifs by emulating an empty else branch. In
      Liftoff, we can generate better code and save compile time by handling
      this specially. If the merge point at the end of the if is not reached
      by the if-branch, we do not need to generate any merge code.
      
      R=titzer@chromium.org
      
      Bug: v8:6600, v8:8423
      Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
      Reviewed-on: https://chromium-review.googlesource.com/c/1356508
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57968}
      c2aaf0a6
  28. 26 Nov, 2018 1 commit
  29. 19 Nov, 2018 1 commit
    • Ben Smith's avatar
      [wasm] Decode bulk memory instructions · 50798d60
      Ben Smith authored
      These instructions aren't implemented yet in TF or in Liftoff, but they
      are properly decoded.
      
      The table instructions (i.e. `table.{init,drop,copy}`) are validated,
      since the table and element sections occur before the code section. The
      memory instructions (i.e. `memory.{init,drop,copy,fill}`) are not
      validated because the data section occurs after the code section, so it
      can't be verified in one pass (without throwing a validation error
      later).
      
      There is currently a discussion about whether to add a new section
      (similar to `func`) that predefines the number of expected data
      segments. If we add this, then we can validate in one pass. For now,
      we'll leave it unimplemented.
      
      Bug: v8:7747
      Change-Id: I839edf51721105a47a1fa8dd5e5e1bd855e72447
      Reviewed-on: https://chromium-review.googlesource.com/c/1339241
      Commit-Queue: Ben Smith <binji@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57622}
      50798d60
  30. 15 Nov, 2018 1 commit
    • Clemens Hammacher's avatar
      [base] Introduce VectorOf helper · 3ad032b7
      Clemens Hammacher authored
      We often need to create a {Vector} view of data owned by a container
      like {std::vector}. The canonical way to do this is this:
      Vector<T>{vec.data(), vec.size()}
      
      This pattern is repeating information which can be deduced
      automatically, like the type T.
      
      This CL introduces a {VectorOf} helper which can construct a {Vector}
      for any container providing a {data()} and {size()} accessor, and uses
      it to replace the pattern above.
      
      R=ishell@chromium.org
      
      Bug: v8:8238
      Change-Id: Ib3a11662acc82cb83f2b4afd07ba88e579d71dba
      Reviewed-on: https://chromium-review.googlesource.com/c/1337584Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57538}
      3ad032b7