1. 17 Dec, 2018 1 commit
  2. 07 Dec, 2018 3 commits
  3. 05 Nov, 2018 1 commit
  4. 23 Oct, 2018 1 commit
  5. 29 Aug, 2018 1 commit
  6. 21 Aug, 2018 1 commit
  7. 09 Aug, 2018 1 commit
    • Ben L. Titzer's avatar
      [wasm] Add WasmFeatures to enable/detect features · 6aa2a253
      Ben L. Titzer authored
      This CL introduces a set of configuration options implemented as
      a struct of booleans that together comprise the set of enabled
      or detected features. The configuration options replace command-line
      flags that were checked deep in the implementation. As such, it is
      necessary to plumb them through multiple levels of abstraction.
      
      R=ahaas@chromium.org
      CC=mstarzinger@chromium.org
      BUG=chromium:868844
      
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: I1b82f5826e4fd263f68e8cafcd923bac5818a637
      Reviewed-on: https://chromium-review.googlesource.com/1163670Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55018}
      6aa2a253
  8. 02 Aug, 2018 1 commit
    • Ben L. Titzer's avatar
      [cleanup] Remove redundant wasm:: namespace prefixes · 99de47f1
      Ben L. Titzer authored
      The wasm/ directory is inconsistent in many places, often within the
      same file. For all code that exists in a v8::internal::wasm namespace,
      this CL removes any wasm:: qualifiers, which is especially helpful
      since most types are already Wasm-named, such as WasmCode, WasmModule,
      etc. Namespace qualifiers are redundant inside the wasm:: namespace and
      thus go against the main point of using namespaces. Removing the
      qualifiers for non Wasm-named classes also makes the code somewhat more
      future-proof, should we move some things that are not really WASM-specific
      (such as ErrorThrower and Decoder) into a higher namespace.
      
      R=clemensh@chromium.org,mstarzinger@chromium.org
      
      Change-Id: Ibff3e1e93c64c12dcb53c46c03d1bfb2fb0b7586
      Reviewed-on: https://chromium-review.googlesource.com/1160232
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54862}
      99de47f1
  9. 20 Jul, 2018 1 commit
  10. 12 Jul, 2018 1 commit
  11. 27 Jun, 2018 1 commit
  12. 26 Jun, 2018 1 commit
  13. 20 Jun, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm][test] Fix WasmModule::num_declared_functions · 7e4e5d0f
      Clemens Hammacher authored
      Our tests currently don't set {WasmModule::num_declared_functions}
      correctly. This CL fixes that.
      This enables the use of {WasmModule::num_declared_functions} instead of
      {NativeModule::num_functions_ - NativeModule::num_imported_functions_}.
      
      Drive-by: Fix {std::vector} reservation to reserve enough space for all
      functions during decoding.
      
      R=titzer@chromium.org
      
      Change-Id: I6d7783aed1c0de3275fc72787dec17c38ff8c73b
      Reviewed-on: https://chromium-review.googlesource.com/1106166
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53857}
      7e4e5d0f
  14. 19 Jun, 2018 2 commits
    • Clemens Hammacher's avatar
      Reland "[wasm] Introduce jump table" · 5f56641b
      Clemens Hammacher authored
      This is a reland of 733b7c82.
      The arm64 bug was fixed in https://crrev.com/c/1105051.
      
      Original change's description:
      > [wasm] Introduce jump table
      >
      > This introduces the concept of a jump table for WebAssembly, which is
      > used for every direct and indirect call to any WebAssembly function.
      > For lazy compilation, it will initially contain code to call the
      > WasmCompileLazy builtin, where it passes the function index to be
      > called.
      > For non-lazy-compilation, it will contain a jump to the actual code.
      > The jump table allows to easily redirect functions for lazy
      > compilation, tier-up, debugging and (in the future) code aging. After
      > this CL, we will not need to patch existing code any more for any of
      > these operations.
      >
      > R=mstarzinger@chromium.org, titzer@chromium.org
      >
      > Bug: v8:7758
      > Change-Id: I45f9983c2b06ae81bf5ce9847f4542fb48844a4f
      > Reviewed-on: https://chromium-review.googlesource.com/1097075
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53805}
      
      TBR=titzer@chromium.org,mstarzinger@chromium.org
      
      Bug: v8:7758
      Change-Id: I68555230c6db97e70f0b8fef784188f55ee04794
      Reviewed-on: https://chromium-review.googlesource.com/1105158
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53829}
      5f56641b
    • Sigurd Schneider's avatar
      [TurboFan] Return MaybeHandle from TurboFan compiler · 0db5e7b8
      Sigurd Schneider authored
      TurboFan returned null handles if compilation did not succeed. This CL
      changes that to a MaybeHandle to make it explicit that client code needs
      to handle the error.
      
      Bug: v8:7856
      Change-Id: I6087e6263faa1150b9788213dd22c398b4a2fc2d
      Reviewed-on: https://chromium-review.googlesource.com/1104688
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53824}
      0db5e7b8
  15. 18 Jun, 2018 2 commits
    • Clemens Hammacher's avatar
      Revert "[wasm] Introduce jump table" · 33f6c3e1
      Clemens Hammacher authored
      This reverts commit 733b7c82.
      
      Reason for revert: breaks arm64 gc-stress: https://ci.chromium.org/buildbot/client.v8.ports/V8%20Linux%20-%20arm64%20-%20sim%20-%20gc%20stress/11659
      
      Original change's description:
      > [wasm] Introduce jump table
      > 
      > This introduces the concept of a jump table for WebAssembly, which is
      > used for every direct and indirect call to any WebAssembly function.
      > For lazy compilation, it will initially contain code to call the
      > WasmCompileLazy builtin, where it passes the function index to be
      > called.
      > For non-lazy-compilation, it will contain a jump to the actual code.
      > The jump table allows to easily redirect functions for lazy
      > compilation, tier-up, debugging and (in the future) code aging. After
      > this CL, we will not need to patch existing code any more for any of
      > these operations.
      > 
      > R=​mstarzinger@chromium.org, titzer@chromium.org
      > 
      > Bug: v8:7758
      > Change-Id: I45f9983c2b06ae81bf5ce9847f4542fb48844a4f
      > Reviewed-on: https://chromium-review.googlesource.com/1097075
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53805}
      
      TBR=mstarzinger@chromium.org,titzer@chromium.org,clemensh@chromium.org,sreten.kovacevic@mips.com
      
      Change-Id: Iea358db2cf13656a65cf69a6d82cbbc10d3e7e1c
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7758
      Reviewed-on: https://chromium-review.googlesource.com/1105157Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53807}
      33f6c3e1
    • Clemens Hammacher's avatar
      [wasm] Introduce jump table · 733b7c82
      Clemens Hammacher authored
      This introduces the concept of a jump table for WebAssembly, which is
      used for every direct and indirect call to any WebAssembly function.
      For lazy compilation, it will initially contain code to call the
      WasmCompileLazy builtin, where it passes the function index to be
      called.
      For non-lazy-compilation, it will contain a jump to the actual code.
      The jump table allows to easily redirect functions for lazy
      compilation, tier-up, debugging and (in the future) code aging. After
      this CL, we will not need to patch existing code any more for any of
      these operations.
      
      R=mstarzinger@chromium.org, titzer@chromium.org
      
      Bug: v8:7758
      Change-Id: I45f9983c2b06ae81bf5ce9847f4542fb48844a4f
      Reviewed-on: https://chromium-review.googlesource.com/1097075
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53805}
      733b7c82
  16. 04 Jun, 2018 2 commits
    • Clemens Hammacher's avatar
      [wasm] Clean up fields and methods in NativeModule · 18d816e9
      Clemens Hammacher authored
      1) The code table never grows, so store it in a heap-allocated byte
         array instead of an std::vector.
      2) Rename {functions_count} to {num_functions} for consistency with
         {num_imported_functions} and occurences in other data structures.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:7754
      Change-Id: Id9d66545ed7aa675d663dad5936a9ef6d44ace7d
      Reviewed-on: https://chromium-review.googlesource.com/1066014
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53488}
      18d816e9
    • Michael Starzinger's avatar
      [wasm] Make stack check independent of the Isolate. · c96ac82c
      Michael Starzinger authored
      This makes stack checks in WasmCode independent of the underlying
      Isolate by loading the limit address from the WasmInstanceObject instead
      of embedding it into the instruction stream. It hence removes the last
      use of the Isolate field from WasmGraphBuilder.
      
      Additionally this introduces the notion of a "runtime stub" which
      represents stub code global to the NativeModule that can be directly
      called from each WasmCode in the same module. These stubs can act as
      trampolines via which Isolate-independent WasmCode can enter other V8
      builtins or runtime functions that remain Isolate-dependent. They will
      eventually replace the current "trampoline" in a NativeModule.
      
      R=titzer@chromium.org
      BUG=v8:7424
      
      Change-Id: Ie1f5582ee656b1ab7716ea06316d6e21a0268e74
      Reviewed-on: https://chromium-review.googlesource.com/1078732
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53487}
      c96ac82c
  17. 25 May, 2018 1 commit
  18. 11 May, 2018 1 commit
  19. 07 May, 2018 1 commit
  20. 27 Apr, 2018 1 commit
  21. 26 Apr, 2018 1 commit
  22. 24 Apr, 2018 1 commit
  23. 19 Apr, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Tear apart the WasmCompilationUnit · 0da7ec58
      Clemens Hammacher authored
      This refactoring is a big step towards separating Turbofan-related code
      from backend independent code. This will allow us to include way less
      headers from "src/compiler" at various places.
      
      The {WasmCompilationUnit} contained information for Turbofan
      compilation, and for Liftoff compilation. This CL tears this apart, such
      that {WasmCompilationUnit} holds backend-independent information, plus
      a pointer to either {LiftoffCompilationUnit} or
      {TurbofanWasmCompilationUnit}. These pointers are opaque, so that
      {function-compiler.h}, defining {WasmCompilationUnit}, does not need to
      include any Turbofan specific or Liftoff specific headers.
      
      R=ahaas@chromium.org, titzer@chromium.org, mstarzinger@chromium.org
      
      Bug: v8:7570, v8:6600
      Change-Id: I024c9a23508ee1b4b3cbe1d068c8e785d732daca
      Reviewed-on: https://chromium-review.googlesource.com/1016640
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52684}
      0da7ec58
  24. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  25. 06 Apr, 2018 2 commits
  26. 05 Apr, 2018 1 commit
  27. 04 Apr, 2018 3 commits
    • Eric Holk's avatar
      [wasm] enable StoreMem_offset_oob_i64 test with trap handlers · f56e2a02
      Eric Holk authored
      The first part of this change updates StoreMem_offset_oob_i64 to use one page of
      Wasm memory, rather than just a few bytes. Using less than a page was out of
      spec for Wasm anyway, so this is better.
      
      This required a small change in the test runner to set and clear the
      thread_in_wasm flag around Wasm calls. This was accomplished by a
      ThreadInWasmScope convenience class.
      
      The majority of the changes are because the cctest environment does not support
      runtime exceptions. In the code generator, where we used to throw a
      WasmMemOutOfBounds exception, we now need to call out to the test hook instead
      if runtime exceptions are not supported. This involved plumbing the
      runtime_exception_support flag down to the code generator. Rather than adding
      and shuffling around extra parameters everywhere, this CL packages the previous
      protected instruction list in a new WasmCompilationData object that now includes
      the runtime_exception_support flag as well.
      
      Bug: v8:5277
      Change-Id: Ic9c9e5a53a07a7773b58c0aee7c26bbd2ddf82f3
      Reviewed-on: https://chromium-review.googlesource.com/989017
      Commit-Queue: Eric Holk <eholk@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52368}
      f56e2a02
    • Ben Titzer's avatar
      Revert "[wasm] Merge the WasmContext into WasmInstanceObject" · 8adb94fc
      Ben Titzer authored
      This reverts commit 57bf0bfe.
      
      Reason for revert: <INSERT REASONING HERE>
      
      Original change's description:
      > [wasm] Merge the WasmContext into WasmInstanceObject
      > 
      > This change makes lifetime management of WasmCode much simpler.
      > By using the WasmInstanceObject as the context for WASM code execution,
      > including the pointer to the memory base and indirect function tables,
      > this keeps the instance alive when WASM code is on the stack, since
      > the instance object is passed as a parameter and spilled onto the stack.
      > This is in preparation of sharing the code between instances and
      > isolates.
      > 
      > Bug: v8:7424
      > 
      > Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e
      > Reviewed-on: https://chromium-review.googlesource.com/958520
      > Commit-Queue: Ben Titzer <titzer@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52361}
      
      TBR=mstarzinger@chromium.org,titzer@chromium.org,ahaas@chromium.org,clemensh@chromium.org
      
      Change-Id: I653e27b46dbc43ad773eda4292d521a508f42d79
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7424
      Reviewed-on: https://chromium-review.googlesource.com/995418Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52364}
      8adb94fc
    • Ben L. Titzer's avatar
      [wasm] Merge the WasmContext into WasmInstanceObject · 57bf0bfe
      Ben L. Titzer authored
      This change makes lifetime management of WasmCode much simpler.
      By using the WasmInstanceObject as the context for WASM code execution,
      including the pointer to the memory base and indirect function tables,
      this keeps the instance alive when WASM code is on the stack, since
      the instance object is passed as a parameter and spilled onto the stack.
      This is in preparation of sharing the code between instances and
      isolates.
      
      Bug: v8:7424
      
      Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e
      Reviewed-on: https://chromium-review.googlesource.com/958520
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52361}
      57bf0bfe
  28. 21 Mar, 2018 1 commit
  29. 14 Mar, 2018 1 commit
  30. 13 Mar, 2018 1 commit
  31. 12 Mar, 2018 1 commit
  32. 09 Feb, 2018 1 commit