1. 02 Feb, 2018 1 commit
  2. 16 Jan, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Merge function table and signature table · 553e70b9
      Clemens Hammacher authored
      Both tables are always updated together and are always accessed
      together. Thus merge them, reducing code complexity, but also code
      space and overhead for accessing them during runtime. Instead of two
      weak global handles, we only need one, which also means one less load
      for each indirect call.
      Merging them also improves cache locality, since signature and code
      address are not stored next to each other in memory, so they will very
      likely end up in the same cache line.
      
      R=titzer@chromium.org
      
      Change-Id: I862df7de93a98aa602a3895796610c2c520d6f21
      Reviewed-on: https://chromium-review.googlesource.com/866868
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50623}
      553e70b9
  3. 20 Dec, 2017 1 commit
  4. 18 Dec, 2017 2 commits
    • Clemens Hammacher's avatar
      [wasm] Dehandlify WasmCompiledModule interface · a1fcd777
      Clemens Hammacher authored
      The interface of {WasmCompiledModule} currently mostly receives and
      provides handles to the contained data. Other interfaces don't (see
      {object-macros.h}.
      This leads to performance and memory overhead for chained accesses like
      {instance->compiled_module()->shared()->script()}, because intermediate
      accessors allocate Handles for no reason. It also breaks the
      constraints that lower-case accessors should be trivial to execute, but
      allocating a handle is not trivial (should not be done in a loop if not
      needed).
      It also silences gcmole errors, as documented in
      https://crrev.com/c/832268.
      
      R=ahaas@chromium.org, mtrofin@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ib82fb295977a47b4a8ab9bae9c9b6e2b235ad5e5
      Reviewed-on: https://chromium-review.googlesource.com/832387
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMircea Trofin <mtrofin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50173}
      a1fcd777
    • Clemens Hammacher's avatar
      [wasm] Remove redirecting accessor methods · ffc4ba74
      Clemens Hammacher authored
      We had a number of accessors defined on {WasmCompiledModule}, which
      redirected to {WasmSharedModuleData}. This is uncommon in the code base
      and hides where information is really stored.
      This CL removes them and accesses information directly from the
      {WasmSharedModuleData} instead.
      
      R=ahaas@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I54fce75dbf7dcb2f16dcf13e4634b5618225a429
      Reviewed-on: https://chromium-review.googlesource.com/831510Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50157}
      ffc4ba74
  5. 25 Oct, 2017 1 commit
  6. 16 Oct, 2017 1 commit
  7. 28 Sep, 2017 1 commit
    • Enrico Bacis's avatar
      [wasm] Introduce the WasmContext · 6cd7a5a7
      Enrico Bacis authored
      The WasmContext struct introduced in this CL is used to store the
      mem_size and mem_start address of the wasm memory. These variables can
      be accessed at C++ level at graph build time (e.g., initialized during
      instance building). When the GrowMemory runtime is invoked, the context
      variables can be changed in the WasmContext at C++ level so that the
      generated code will load the correct values.
      
      This requires to insert a relocatable pointer only in the
      JSToWasmWrapper (and in the other wasm entry points), the value is then
      passed from function to function as an automatically added additional
      parameter. The WasmContext is then dropped when creating an Interpreter
      Entry or when invoking a JavaScript function. This removes the need of
      patching the generated code at runtime (i.e., when the memory grows)
      with respect to WASM_MEMORY_REFERENCE and WASM_MEMORY_SIZE_REFERENCE.
      However, we still need to patch the code at instance build time to patch
      the JSToWasmWrappers; in fact the address of the WasmContext is not
      known during compilation, but only when the instance is built.
      
      The WasmContext address is passed as the first parameter. This has the
      advantage of not having to move the WasmContext around if the function
      does not use many registers. This CL also changes the wasm calling
      convention so that the first parameter register is different from the
      return value register. The WasmContext is attached to every
      WasmMemoryObject, to share the same context with multiple instances
      sharing the same memory. Moreover, the nodes representing the
      WasmContext variables are cached in the SSA environment, similarly to
      other local variables that might change during execution.  The nodes are
      created when initializing the SSA environment and refreshed every time a
      grow_memory or a function call happens, so that we are sure that they
      always represent the correct mem_size and mem_start variables.
      
      This CL also removes the WasmMemorySize runtime (since it's now possible
      to directly retrieve mem_size from the context) and simplifies the
      GrowMemory runtime (since every instance now has a memory_object).
      
      R=ahaas@chromium.org,clemensh@chromium.org
      CC=gdeepti@chromium.org
      
      Change-Id: I3f058e641284f5a1bbbfc35a64c88da6ff08e240
      Reviewed-on: https://chromium-review.googlesource.com/671008
      Commit-Queue: Enrico Bacis <enricobacis@google.com>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48209}
      6cd7a5a7
  8. 08 Sep, 2017 2 commits
  9. 31 Aug, 2017 1 commit