1. 08 Jul, 2019 1 commit
  2. 31 May, 2019 1 commit
    • Clemens Hammacher's avatar
      [Liftoff] Add histogram for bailout reasons · c354fb9c
      Clemens Hammacher authored
      This CL adds a new enum {LiftoffBailoutReason}, and tracks this reason
      for each bailout. This will give us data to prioritize extensions of
      Liftoff for new proposals or last missing instructions. Since we also
      track the {kSuccess} case, we will also see what percentage of
      functions can be compiled with Liftoff overall.
      
      R=mstarzinger@chromium.org
      CC=jwd@chromium.org
      
      Change-Id: I42b6a14c5a298ddda7053c195e8b650dc1fe66dc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1634910Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61939}
      c354fb9c
  3. 08 May, 2019 1 commit
  4. 17 Apr, 2019 1 commit
  5. 01 Mar, 2019 1 commit
  6. 28 Jan, 2019 1 commit
  7. 17 Jan, 2019 1 commit
  8. 16 Jan, 2019 1 commit
    • Clemens Hammacher's avatar
      [assembler] Allow to pass custom buffer implementations · 1a3aab51
      Clemens Hammacher authored
      When generating an Assembler, you currently have two choices: Either
      let the Assembler allocate a growable internal buffer, which is owned
      by the Assembler. Or provide an externally allocated buffer, which
      cannot grow.
      This CL changes this interface to allow providing any implementation of
      a buffer. The provided buffer can be a view to an externally owned
      buffer, which still can grow.
      This will be used to split WebAssembly compilation and code submission.
      The buffer needs to be able to grow, but cannot be owned by the
      Assembler because it has to survive until the code is submitted.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:8689
      Change-Id: Ib6c5ebffc8b71d0778944abac34f02c5cc7dbd79
      Reviewed-on: https://chromium-review.googlesource.com/c/1411347
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58848}
      1a3aab51
  9. 04 Jan, 2019 1 commit
  10. 03 Jan, 2019 2 commits
  11. 19 Dec, 2018 2 commits
  12. 28 Nov, 2018 1 commit
  13. 17 Oct, 2018 1 commit
  14. 12 Oct, 2018 1 commit
    • Clemens Hammacher's avatar
      [Liftoff] Fewer pinned registers on store · 56b8ab5d
      Clemens Hammacher authored
      On ia32, we were pinning too many registers, resulting in no unpinned
      byte registers left (we only have three byte registers since {ebx}
      is reserved for the root register).
      It turns out that on most paths, we don't actually need to pin any
      registers, since {Store} is often the last call for an operation (like
      any store or set_global). If registers need to be pinned, only pass
      those that must be kept alive across the {Store}. This allows to
      compute a more narrow set of pinned registers on demand inside {Store}.
      
      Plus minor drive-by changes.
      
      R=titzer@chromium.org
      
      Bug: chromium:894374, chromium:894307, v8:6600
      Change-Id: Ic4d7131784c193dc7a2abf0e504d9973f6d5c5f1
      Reviewed-on: https://chromium-review.googlesource.com/c/1275819
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56587}
      56b8ab5d
  15. 14 Sep, 2018 1 commit
  16. 12 Sep, 2018 3 commits
    • Clemens Hammacher's avatar
      Reland^2 "[Liftoff] Implement f32.copysign and f64.copysign" · a39fcbd2
      Clemens Hammacher authored
      This is a reland of 6afe7d18.
      The reason for the revert is fixed in https://crrev.com/c/1219633.
      
      Original change's description:
      > [Liftoff] Implement f32.copysign and f64.copysign
      >
      > These are two of the few missing instructions. This CL implements them
      > for ia32 and x64, and bails out on other platforms.
      > On x64, we are using the BTR instruction since we cannot have 64-bit
      > immediates.
      >
      > Drive-by: Fix naming of existing bt/bts instructions on x64.
      >
      > R=titzer@chromium.org
      >
      > Bug: v8:6600
      > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55780}
      
      Bug: v8:6600
      Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40
      
      TBR=titzer@chromium.org
      
      Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40
      Reviewed-on: https://chromium-review.googlesource.com/1219693Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55817}
      a39fcbd2
    • Clemens Hammacher's avatar
      Revert "Reland "[Liftoff] Implement f32.copysign and f64.copysign"" · 1c860ca4
      Clemens Hammacher authored
      This reverts commit f0f5f877.
      
      Reason for revert: Merge conflict (does not compile).
      
      Original change's description:
      > Reland "[Liftoff] Implement f32.copysign and f64.copysign"
      > 
      > This is a reland of 6afe7d18.
      > The reason for the revert is fixed in https://crrev.com/c/1219633.
      > 
      > Original change's description:
      > > [Liftoff] Implement f32.copysign and f64.copysign
      > >
      > > These are two of the few missing instructions. This CL implements them
      > > for ia32 and x64, and bails out on other platforms.
      > > On x64, we are using the BTR instruction since we cannot have 64-bit
      > > immediates.
      > >
      > > Drive-by: Fix naming of existing bt/bts instructions on x64.
      > >
      > > R=titzer@chromium.org
      > >
      > > Bug: v8:6600
      > > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#55780}
      > 
      > Bug: v8:6600
      > Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638
      > Reviewed-on: https://chromium-review.googlesource.com/1219508
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55812}
      
      TBR=titzer@chromium.org,clemensh@chromium.org
      
      Change-Id: Iae075a8f5225f1678691698bf3a304faa5ae2aab
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6600
      Reviewed-on: https://chromium-review.googlesource.com/1220747Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55813}
      1c860ca4
    • Clemens Hammacher's avatar
      Reland "[Liftoff] Implement f32.copysign and f64.copysign" · f0f5f877
      Clemens Hammacher authored
      This is a reland of 6afe7d18.
      The reason for the revert is fixed in https://crrev.com/c/1219633.
      
      Original change's description:
      > [Liftoff] Implement f32.copysign and f64.copysign
      >
      > These are two of the few missing instructions. This CL implements them
      > for ia32 and x64, and bails out on other platforms.
      > On x64, we are using the BTR instruction since we cannot have 64-bit
      > immediates.
      >
      > Drive-by: Fix naming of existing bt/bts instructions on x64.
      >
      > R=titzer@chromium.org
      >
      > Bug: v8:6600
      > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55780}
      
      Bug: v8:6600
      Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638
      Reviewed-on: https://chromium-review.googlesource.com/1219508Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55812}
      f0f5f877
  17. 11 Sep, 2018 2 commits
  18. 10 Sep, 2018 1 commit
  19. 04 Sep, 2018 1 commit
    • Clemens Hammacher's avatar
      [Liftoff] Load memory size as ptr-sized int · 0e460c25
      Clemens Hammacher authored
      Since https://crrev.com/c/1112003, the memory size is stored as size_t
      instead of uint32_t in order to support 4GB memories.
      Loading it as uint32_t only works on little-endian systems, and only for
      memory sizes <4GB. This CL fixes this to load and process the memory
      size as pointer-sized value.
      Additional platform-specific methods are added to perform a shift by a
      constant value. This can be reused to improve the generated code for
      other shifts.
      
      R=titzer@chromium.org
      
      Bug: v8:8130, v8:6600
      Change-Id: Ifa688a3ed0e2809190571f24bdf47a7f53880b3d
      Reviewed-on: https://chromium-review.googlesource.com/1203950
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55609}
      0e460c25
  20. 10 Aug, 2018 1 commit
  21. 27 Jul, 2018 1 commit
    • Ben L. Titzer's avatar
      [wasm] Support 4GiB memories in Liftoff · 352e408b
      Ben L. Titzer authored
      Add codegen support for up to 4GiB memories in Liftoff code.
      
      This CL also adds three new mjsunit tests that stress large WASM
      memories (1, 2, and 4 GiB) and checks that accesses near these
      boundaries properly generate traps.
      
      Note there is still some trickiness around the setting of:
        1.) the flag --wasm-max-mem-pages
        2.) wasm-limits.h kSpecMaxWasmMemoryPages = 65536
        3.) wasm-limits.h kV8MaxWasmMemoryPages = 32767
      
      In particular, the allocation of memories is still limited to
      3.) and the runtime flag can only lower this limit.
      
      The above means that the tests for 2GiB and 4GiB memories will silently
      OOM by design until 3.) is changed (though they currently pass with
      manual testing). I argue it is better to include these tests up front,
      since they will immediately trigger if their memory allocation succeeds.
      
      Therefore the plan is to lift the restriction on 3.) after removing
      all other other internal V8 limitations including array buffers and views.
      
      R=clemensh@chromium.org
      CC=mstarzinger@chromium.org
      BUG=v8:7881
      
      Change-Id: I3205ac2daf5c9a84364c670a2c3ef2258e5649f6
      Reviewed-on: https://chromium-review.googlesource.com/1151309
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54754}
      352e408b
  22. 06 Jul, 2018 1 commit
  23. 02 Jul, 2018 1 commit
  24. 28 Jun, 2018 1 commit
  25. 20 Jun, 2018 1 commit
    • Ben L. Titzer's avatar
      [asm] Rework Assembler::IsolateData into Assembler::Options · 4252d53f
      Ben L. Titzer authored
      This CL attempts to simplify the Assembler's dependency on the
      isolate, in particular on a global "serializer_enabled" mode contained
      therein. The "serializer_enabled" condition enabled and disabled
      a number of things in both the assemblers and macro assemblers. To
      make these dependencies explicit, the Assembler::IsolateData is refactored
      to be a proper Assembler::Options struct that controls specific assembler
      behaviors, with default settings easily computable from the isolate.
      
      This also helps make the contract for compiling WASM code more explicit
      (since WASM code needs to have reloc info recorded for external references)
      we can explicitly enable this recording without trying to "trick" the
      assembler using "serializer_enabled".
      
      R=jgruber@chromium.org
      CC=mstarzinger@chromium.org, herhut@chromium.org
      
      Change-Id: I7a8ba49df7b75b292d73ec2aa6e507c27a3d99c8
      Reviewed-on: https://chromium-review.googlesource.com/1105982
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53890}
      4252d53f
  26. 11 Jun, 2018 1 commit
  27. 07 Jun, 2018 1 commit
  28. 05 Jun, 2018 1 commit
  29. 18 May, 2018 1 commit
  30. 16 May, 2018 1 commit
  31. 15 May, 2018 1 commit
  32. 14 May, 2018 1 commit
  33. 03 May, 2018 1 commit
  34. 27 Apr, 2018 2 commits