1. 24 Feb, 2021 1 commit
  2. 23 Feb, 2021 1 commit
  3. 22 Feb, 2021 3 commits
  4. 19 Feb, 2021 1 commit
  5. 16 Feb, 2021 1 commit
    • Clemens Backes's avatar
      [liftoff] Cache the instance in a register · adf035fb
      Clemens Backes authored
      This CL avoids redundant loads of the instance from the frame by caching
      it in a register if possible. This register will be the first one to be
      cleared once we run out of registers (hence it's called a "volatile
      register"). On local tests, this seems to reduce most redundant loads
      within a function, and it also reduces the load for the stack check in
      the function prologue.
      After the stack check, we need to discard the cached instance though,
      since the potential runtime call for the stack check might clobber it.
      This will be addressed in a follow-up CL by re-loading the cached
      instance after the stack check. This is expected to remove another good
      chunk of instance loads, because the instance would initially be
      available in a register when starting the function code.
      
      R=thibaudm@chromium.org
      
      Bug: v8:11336
      Change-Id: Ie65ab81263fb9d972f4b7a6daaef86cf704874ef
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695401
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72779}
      adf035fb
  6. 12 Feb, 2021 1 commit
    • Clemens Backes's avatar
      [wasm][debug] Implement instrumentation breakpoints · 15f3392a
      Clemens Backes authored
      This CL adds support for instrumentation breakpoints in wasm. The
      request for "break on entry" is set on the script, and we need to keep
      it stored there because there might not be any instances of that wasm
      module yet. Once instances get created, the flag value is transferred to
      all instances. The flag stored there is then checked in the function
      prologue in Liftoff debugging code. This ensures that we will stop at
      the first valid break position in any function within that module.
      Hitting that instrumentation breakpoint will then clear the flag from
      the script and from all other live instances (in the same isolate).
      
      A first basic test is contained in this CL. More tests will be added
      later.
      
      R=thibaudm@chromium.org, bmeurer@chromium.org
      
      Bug: chromium:1151211
      Change-Id: I5442d4044934988269becececc03699b850d51d7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2690588Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72701}
      15f3392a
  7. 11 Feb, 2021 1 commit
  8. 10 Feb, 2021 2 commits
  9. 08 Feb, 2021 2 commits
  10. 01 Feb, 2021 1 commit
  11. 28 Jan, 2021 1 commit
  12. 27 Jan, 2021 1 commit
  13. 26 Jan, 2021 2 commits
  14. 25 Jan, 2021 2 commits
  15. 22 Jan, 2021 1 commit
  16. 13 Jan, 2021 2 commits
  17. 12 Jan, 2021 2 commits
  18. 08 Jan, 2021 3 commits
  19. 05 Jan, 2021 4 commits
  20. 22 Dec, 2020 1 commit
  21. 17 Dec, 2020 1 commit
  22. 16 Dec, 2020 4 commits
    • Jakob Kummerow's avatar
      [wasm-gc] Liftoff support part 5: i31 · a3ce2f6d
      Jakob Kummerow authored
      This implements support for i31.get_s and i31.get_u.
      
      Bug: v8:7748
      Change-Id: Icbfddbc2ff46b4eb6bf3edf7b3a794f9797361d4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595309
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71808}
      a3ce2f6d
    • Jakob Kummerow's avatar
      [wasm-gc] Liftoff support part 3: arrays · 3dffdf03
      Jakob Kummerow authored
      This adds support for the following instructions:
      ref.eq, array.new_with_rtt, array.new_default_with_rtt,
      array.get, array.set, array.len.
      
      Bug: v8:7748
      Change-Id: I93c4a6676acc8b0ac035dd50762be6a1cc545a57
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593340
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71796}
      3dffdf03
    • Andreas Haas's avatar
      [wasm][liftoff] Fix stack check safepoints for arm, arm64, and ia32 · 8656a594
      Andreas Haas authored
      Registers are spilled differently on arm and intel platforms.
      Additionally, on arm64 registers are spilled with padding. Therefore
      the code for safepoint information for spilled registers is platform-
      dependent now.
      
      Additionally the alignment of the frame size is done before the
      out-of-line code now, so that the safepoint indices can be calculated
      correctly for spilled registers in out-of-line code.
      
      Finally, some code was unimplemented on ia32 and arm, which I added
      now.
      
      R=thibaudm@chromium.org
      
      Bug: v8:7581, v8:10929
      Change-Id: Ia9b824dfc74cafa9ec3cc0d308fb18b485afd715
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2584952
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71786}
      8656a594
    • Zhi An Ng's avatar
      [wasm-simd][x64] Fix definition of Shufps · 5f4b0e47
      Zhi An Ng authored
      The definition of Shufps is wrong, we are incorrectly passing 0 as the
      immediate in all cases. No tests broke because we only used Shufps for
      splats, which has imm8 == 0 anyway.
      
      Also, it was using movss, which only moves a single 32-bit. Because we
      were using it only for f32x4 splat, this ended up being enough (imm8 ==
      0 meant that we only shuffled the low 32-bit). This is fixed to use
      movaps, which moves the entire 128-bit register.
      
      Also tweak the definition of Shufps to take 4 arguments. `vshufps dst,
      src1, src2, imm8` shuffles src1 and src2 into dst. `shufps dst, src,
      imm8`, shuffles dst and src into dst.
      
      So `Shufps(dst, src, imm8)` is ambiguous in the AVX case, it could be:
      1. vshufps(dst, src, src, imm8), or
      2. vshufps(dst, dst, src, imm8)
      
      2. is more likely to be the intended behavior, but it introduces a false
      dependency on the value of dst.
      
      With `Shufps(dst, src1, src2, imm8)`, it is clearer what the behavior
      should be:
      1. shufps(dst, src2, imm8) matches the AVX behavior IFF dst == src1.
      
      Change-Id: I60dc4ec868023d28d00f2b09d2c53b82a729bc4d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2591849Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71775}
      5f4b0e47
  23. 15 Dec, 2020 2 commits