1. 14 Oct, 2020 1 commit
  2. 21 Sep, 2020 1 commit
  3. 18 Sep, 2020 2 commits
  4. 11 Aug, 2020 1 commit
  5. 28 Jul, 2020 1 commit
  6. 24 Jul, 2020 1 commit
    • Clemens Backes's avatar
      [wasm] Don't automatically remove breakpoints · 6880a8dd
      Clemens Backes authored
      Out of the four listed reasons, two are obsolete now, since stepping
      does not modify the code table any more. The first reason also cannot
      happen any more, since removing a breakpoint will also patch the stack
      of the isolate, and even if not, removing a breakpoint which is not set
      will have no effect (not even a stack rewriting). The same applies for
      the last listed reason.
      
      So overall, this code is not needed any more, since it has no effect.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10611
      Change-Id: I773ac2515b66e8bf66cb035c315db552024485c3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2316299Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69041}
      6880a8dd
  7. 21 Jul, 2020 1 commit
    • Arnaud Robin's avatar
      [wasm] Implement dynamic tiering in wasm · f181dff3
      Arnaud Robin authored
      On desktop systems, we use a very basic tiering strategy: Everything is
      initially compiled with Liftoff, and once that is done, the module can
      start being used. Concurrently to the execution, we re-compile all code
      with TurboFan, and hot-swap each function once TurboFan finishes.
      
      We should start using a more dynamic strategy where each function is
      tiered-up when judged necessary. This change will then tier-up each
      liftoff function once it has been called 5 times.
      
      I then added a counter in the native module, that is updated directly
      from Liftoff code, and a runtime call is then made when the counter
      reaches the goal.
      
      R=clemensb@chromium.org
      CC=​thibaudm@chromium.org
      
      Bug: v8:10728
      Change-Id: I8dc2b02fdff8d97781bb1cf496886594b3d7f644
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2306803
      Commit-Queue: Arnaud Robin <arobin@google.com>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68971}
      f181dff3
  8. 15 Jul, 2020 1 commit
  9. 09 Jul, 2020 1 commit
  10. 07 Jul, 2020 1 commit
  11. 29 Jun, 2020 1 commit
  12. 26 Jun, 2020 2 commits
    • Shu-yu Guo's avatar
      Revert "[wasm-gc] Implement rtt.sub" · 30456566
      Shu-yu Guo authored
      This reverts commit 04ce88ea.
      
      Reason for revert: TSAN failure: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/32135
      
      Original change's description:
      > [wasm-gc] Implement rtt.sub
      > 
      > RTTs are internally represented as Maps. To store supertype information,
      > this patch introduces a WasmTypeInfo object, which is installed on Wasm
      > objects' Maps and points at both the off-heap type information and the
      > parent RTT.
      > In this patch, rtt.sub always creates a fresh RTT. The canonicalization
      > that the proposal requires will be implemented later.
      > 
      > Bug: v8:7748
      > Change-Id: I8286dd11f520966155cd95c2bd844ec34fccd131
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2260566
      > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#68564}
      
      TBR=ulan@chromium.org,jkummerow@chromium.org,tebbi@chromium.org
      
      Change-Id: I311732e1ced4de7a58b87d4a9b6056e0d62aa986
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7748
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270734Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
      Commit-Queue: Shu-yu Guo <syg@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68567}
      30456566
    • Jakob Kummerow's avatar
      [wasm-gc] Implement rtt.sub · 04ce88ea
      Jakob Kummerow authored
      RTTs are internally represented as Maps. To store supertype information,
      this patch introduces a WasmTypeInfo object, which is installed on Wasm
      objects' Maps and points at both the off-heap type information and the
      parent RTT.
      In this patch, rtt.sub always creates a fresh RTT. The canonicalization
      that the proposal requires will be implemented later.
      
      Bug: v8:7748
      Change-Id: I8286dd11f520966155cd95c2bd844ec34fccd131
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2260566
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68564}
      04ce88ea
  13. 24 Jun, 2020 1 commit
  14. 22 Jun, 2020 1 commit
  15. 28 May, 2020 1 commit
    • Clemens Backes's avatar
      [wasm][debug] Support multi-threaded stepping · 97434791
      Clemens Backes authored
      Instead of keeping a single {stepping_frame_} per native module, we now
      keep one frame id per isolate. Hence, each isolate can step through a
      different frame, independent of other isolates.
      The on-stack-replacement of the stepping frame already works on a
      per-isolate basis, since we only replace the return address of a single
      frame, part of the isolate that requested stepping.
      
      The new test (which also executes in a variant with two concurrent
      isolates) revealed some more data races to fix.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10359
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
      Change-Id: I0bb013737162bd09b9f4be9c08990bca7bf736ac
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2214838Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68045}
      97434791
  16. 19 May, 2020 1 commit
  17. 11 May, 2020 1 commit
  18. 06 May, 2020 1 commit
  19. 05 May, 2020 1 commit
    • Clemens Backes's avatar
      [wasm] Remove interpreter entry code · 61c2a0f4
      Clemens Backes authored
      This removes the interpreter entry stubs, which are used to redirect
      specific wasm functions to the interpreter. It is only needed when
      mixing JS code with interpreted Wasm code, otherwise the test functions
      just call the interpreter directly.
      Thus a lot of tests that contain such interaction between JS and Wasm
      need to be restricted to execute in Liftoff and TurboFan only.
      
      After this CL, the WASM_INTERPRETER_ENTRY frame type and the
      corresponding WasmInterpreterEntryFrame are dead, and will be removed in
      a follow-up CL.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10389
      Change-Id: I8e50d350dbc2afcc1cddaeb98baf23711117af2d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172962
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67559}
      61c2a0f4
  20. 04 May, 2020 1 commit
    • Manos Koukoutos's avatar
      [wasm] Avoid runtime calls for exception handling · 567a9bdf
      Manos Koukoutos authored
      Motivation:
      Improve code efficiency by replacing runtime calls with manually written
      turbofan code where possible.
      
      Changes:
      - Remove the runtime functions `Runtime_WasmExceptionGetTag` and
        `Runtime_WasmExceptionGetValues` and replace them with turbofan code.
      - Introduce the builtin function `GetOwnProperty`.
      - Change `wasm-compiler.h` and `wasm-compiler.cc` to accomodate the new
        changes.
        - Introduce three new macros in `wasm-compiler.cc`.
        - Use those macros in two additional places to remove code
          duplication.
      
      Change-Id: I4a32f9e5f7ee55dc50cd03378a68897888ece5c8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162905Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67530}
      567a9bdf
  21. 29 Apr, 2020 1 commit
  22. 23 Apr, 2020 1 commit
  23. 21 Apr, 2020 3 commits
  24. 17 Apr, 2020 1 commit
  25. 26 Mar, 2020 1 commit
  26. 23 Mar, 2020 2 commits
  27. 19 Mar, 2020 2 commits
    • Andreas Haas's avatar
      [wasm] Introduce a TableCopy builtin · 1e1d4d82
      Andreas Haas authored
      This CL introduces a CSA builtin for the TableCopy instruction. This
      builtin allows to generate smaller code for both TurboFan and Liftoff,
      and easier code generation from Liftoff.
      
      The smaller code size comes from:
      * Parameters are passed through registers, not the stack.
      * Lower number of parameters: the call target, number of parameters, and
      context are not passed as parameters.
      * No int to smi conversion in generated code.
      
      R=clemensb@chromium.org
      
      Bug: v8:10281
      Change-Id: I4734b94c8a2aff08a5938504e3e36d0d2424f8ca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2110010
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66797}
      1e1d4d82
    • Andreas Haas's avatar
      [wasm] Introduce a WasmTableInit CSA builtin · ca5ee9d6
      Andreas Haas authored
      This CL introduces a CSA builtin for the TableInit instruction. This
      builtin allows to generate smaller code for both TurboFan and Liftoff,
      and easier code generation from Liftoff.
      
      The smaller code size comes from:
      * Parameters are passed through registers, not the stack.
      * Lower number of parameters: the call target, number of parameters, and
      context are not passed as parameters.
      * No int to smi conversion in generated code.
      
      The CL also introduces a small CSA function which takes an uint32 value
      and a max value as parameters and returns a Smi of the minimum of these
      two.
      
      R=clemensb@chromium.org, ishell@chromium.org
      
      Bug: v8:10281
      Change-Id: I40f248c20ec76e6ae9483a5e2907a68f42f2cb04
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2106201
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66792}
      ca5ee9d6
  28. 13 Mar, 2020 2 commits
  29. 12 Mar, 2020 1 commit
  30. 02 Mar, 2020 2 commits
    • Andreas Haas's avatar
      Reland "[wasm] Refactor AtomicWait implementation" · 7ad6b04e
      Andreas Haas authored
      Stack parameters in the StubCallDescriptor were set to the wrong type. I
      changed it now so that for stack parameters that are specified in the
      CallInterfaceDescriptor, type specified type is used. All other
      parameters are assumed to be tagged, as it has been until now.
      
      Original change's description:
      > [wasm] Refactor AtomicWait implementation
      >
      > The existing implementation included aspects that are not
      > straight-forward to implement in Liftoff and seemed inefficient:
      > * Convert the timeout in WebAssembly code from I64 to F64, just to
      >   convert it back in the runtime.
      >   * On 32-bit platforms this conversion needs an additional C-call.
      > * Split the I64 expected value from I64 into two I32 values in the
      >   wasm-compiler.
      >   * Ideally the int64-lowering takes care of 32-bit specific handling.
      >
      > With this CL the timeout and the expected value are passed as I64 to
      > the runtime (a builtin moves the I64 into a bigint for that). The
      > int64-lowering takes care of 32-bit platforms. There are special
      > builtins for 32-bit platforms, but they are written such that ideally
      > also the int64-lowering could create them.
      
      Bug: v8:10108
      Change-Id: Ib87b543666708457c0d686208a86e46cdca3f9a2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2080362Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66533}
      7ad6b04e
    • Clemens Backes's avatar
      [wasm] Add a separate frame type for debug break frames · 14a9968f
      Clemens Backes authored
      The frame created by the WasmDebugBreak builtin now has a separate frame
      type, which will (later) allow to inspect the spilled registers.
      
      Once Liftoff supports reference types, this frame will also need special
      GC support for spilled heap references.
      
      R=jkummerow@chromium.org
      
      Bug: v8:10222
      Change-Id: I110e51d1e6d09b0f44dcdd1cdcaafa2eaa64fddd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2083013Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66531}
      14a9968f
  31. 28 Feb, 2020 2 commits
    • Sathya Gunasekaran's avatar
      Revert "[wasm] Refactor AtomicWait implementation" · 9945e908
      Sathya Gunasekaran authored
      This reverts commit 77d4e230.
      
      Reason for revert: verify csa build bot broken
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20verify%20csa/16218?
      
      Original change's description:
      > [wasm] Refactor AtomicWait implementation
      > 
      > The existing implementation included aspects that are not
      > straight-forward to implement in Liftoff and seemed inefficient:
      > * Convert the timeout in WebAssembly code from I64 to F64, just to
      >   convert it back in the runtime.
      >   * On 32-bit platforms this conversion needs an additional C-call.
      > * Split the I64 expected value from I64 into two I32 values in the
      >   wasm-compiler.
      >   * Ideally the int64-lowering takes care of 32-bit specific handling.
      > 
      > With this CL the timeout and the expected value are passed as I64 to
      > the runtime (a builtin moves the I64 into a bigint for that). The
      > int64-lowering takes care of 32-bit platforms. There are special
      > builtins for 32-bit platforms, but they are written such that ideally
      > also the int64-lowering could create them.
      > 
      > R=​jkummerow@chromium.org, binji@chromium.org
      > 
      > Bug: v8:10108
      > Change-Id: I2dbba5839779961b1c5bde4c23fc3f38f1895a52
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2071867
      > Commit-Queue: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Ben Smith <binji@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#66497}
      
      TBR=binji@chromium.org,jkummerow@chromium.org,ahaas@chromium.org,clemensb@chromium.org
      
      Change-Id: If284aa07eedddd2fbea4df8c53c7d371cac1d42e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10108
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2080250Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66498}
      9945e908
    • Andreas Haas's avatar
      [wasm] Refactor AtomicWait implementation · 77d4e230
      Andreas Haas authored
      The existing implementation included aspects that are not
      straight-forward to implement in Liftoff and seemed inefficient:
      * Convert the timeout in WebAssembly code from I64 to F64, just to
        convert it back in the runtime.
        * On 32-bit platforms this conversion needs an additional C-call.
      * Split the I64 expected value from I64 into two I32 values in the
        wasm-compiler.
        * Ideally the int64-lowering takes care of 32-bit specific handling.
      
      With this CL the timeout and the expected value are passed as I64 to
      the runtime (a builtin moves the I64 into a bigint for that). The
      int64-lowering takes care of 32-bit platforms. There are special
      builtins for 32-bit platforms, but they are written such that ideally
      also the int64-lowering could create them.
      
      R=jkummerow@chromium.org, binji@chromium.org
      
      Bug: v8:10108
      Change-Id: I2dbba5839779961b1c5bde4c23fc3f38f1895a52
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2071867
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarBen Smith <binji@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66497}
      77d4e230