1. 20 Aug, 2020 8 commits
  2. 19 Aug, 2020 25 commits
  3. 18 Aug, 2020 7 commits
    • Andreas Haas's avatar
      [wasm] Add some simd opcodes to the wasm-module-builder · 74b907ae
      Andreas Haas authored
      The V8 wasm fuzzer can create regression tests for failing fuzzer cases.
      These regression tests use the wasm-module-builder.js. With the addition
      of simd to the wasm-compile-fuzzer, the fuzzer can now create test cases
      that use simd instructions, but the wasm-module-builder.js did not know
      yet about the new instructions. This CL adds some instructions to
      wasm-module-builder.js.
      
      R=zhin@chromium.org
      
      Bug: chromium:1116019
      Change-Id: I198e4f11c2225a65d6b438f95e351fc14ee66218
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362694
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69467}
      74b907ae
    • Shu-yu Guo's avatar
      Fix "name" property of %ThrowTypeError% to be spec-conformant · 985a9dda
      Shu-yu Guo authored
      This is a normative PR that reached consensus at the June 2019 TC39:
      https://github.com/tc39/test262/pull/2299
      
      Bug: v8:9646
      Change-Id: Idbeea703fe264da43825729e7b37a08a1bb10001
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360907
      Commit-Queue: Shu-yu Guo <syg@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69466}
      985a9dda
    • Milad Farazmand's avatar
      PPC/s390: [wasm] Fix tier down after deserialization · 65dde243
      Milad Farazmand authored
      Port 2547e1ce
      
      Original Commit Message:
      
          Since the compilation progress was never initialized on deserialization,
          tier down was always skipped on such modules.
          By initializing to the expected state after deserialization (i.e. all
          code as TurboFan code), we make sure that later recompilation works as
          expected.
      
      R=clemensb@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: Iab66ca0d1bfb36cfee56ccd85720d4c5552eb9c5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2363270Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#69465}
      65dde243
    • Clemens Backes's avatar
      [wasm] Improve error messages on OOM · 677a22fb
      Clemens Backes authored
      Instead of returning a boolean value on {WasmCodeManager::Commit}, and
      always failing on {false}, just remove the return value and fail within
      {WasmCodeManager::Commit} directly. This allows us to generate better
      error messages if running OOM.
      
      R=thibaudm@chromium.org
      
      Bug: chromium:1107649, chromium:1117033
      Change-Id: Ic8089e4385ddf92c164b9a0c770c210e1caddcbe
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362962Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69464}
      677a22fb
    • Dirk Pranke's avatar
      Fix visiblity rules for configs enforced by the latest GN version. · 7c182bd6
      Dirk Pranke authored
      Prior versions of GN had a bug (gn:22) where visibility rules
      for configs weren't being enforced properly.
      
      This CL tweaks the visibility settings of some configs to
      conform to the latest version.
      
      Change-Id: Ic5d827a1f2774278d3894f67fe52bfca836c0409
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360909
      Commit-Queue: Dirk Pranke <dpranke@google.com>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69463}
      7c182bd6
    • Z Nguyen-Huu's avatar
      [turbofan] Reduce consecutive machine multiplication with constants · e3bbf2bf
      Z Nguyen-Huu authored
      There exists such optimization for additions but not for multiplication.
      
      This adds optimizations that apply the reductions
        (x * Int32Constant(a)) * Int32Constant(b)) => x * Int32Constant(a * b)
        (x * Int64Constant(a)) * Int64Constant(b)) => x * Int64Constant(a * b)
      to the TurboFan graph.
      
      Bug: v8:10305
      Change-Id: I28f72c2b7d8ff0f758a0a08b69fb3763557a6241
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360327
      Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69462}
      e3bbf2bf
    • Milad Farazmand's avatar
      PPC/s390: [wasm-simd] Support returning Simd128 on caller's stack · 9b317d2d
      Milad Farazmand authored
      Port 360c9294
      
      Original Commit Message:
      
          In Liftoff, we were missing kS128 cases to load to/from stack.
      
          For the x64 and ARM64 instruction selector, the calculation of
          reverse_slot is incorrect for 128-bit values:
      
          - reverse_slot += 2 (size of 128-bit values, 2 pointers)
          - this copies from slot -2 into register
          - but the value starts at slot -1, it occupies slots -1 and -2
          - we end up copying slot -2 (most significant half) of the register, and
          also slot -3, which is where rsi was store (Wasm instance addr)
          - the test ends up with a different result every time
      
          The calculation of reverse_slot is changed to follow how ia32 and ARM
          does it, which is to start with
      
          - reverse_slot = 0
          - in the code-generator, add 1 to the slot
          - then after emitting Peek operation, reverse_slot += 2
      
          The fixes for x64 and ARM64 are in both instruction-selector and
          code-generator.
      
          ia32 and ARM didn't support writing kSimd128 values yet, it was only a
          missing check in code-generator, so add that in.
      
          For ARM, the codegen is more involved, vld1 does not support addressing
          with an offset, so we have to do the addition into a scratch register.
      
          Also adding a test for returning multiple v128. V128 is not exposed to
          JavaScript, so we use a Wasm function call, and then an involved chain
          of extract lanes, returning 6 i32 which we verify the values of. It
          extracts the first and last lane of the i32x4 value in order to catch
          bugs where we write or read to a wrong stack slot (off by 1).
      
          The simd-scalar-lowering for kCall was only handling single s128 return,
          we adopt the way i64-lowering handles kCall, so that is can now handle
          any kinds of calls with s128 in the descriptor.
      
      R=zhin@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: I1ad9595d7820f04687c9d79941ad04c6eb207897
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2363118Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
      Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#69461}
      9b317d2d