1. 04 Aug, 2020 1 commit
  2. 28 Jul, 2020 2 commits
  3. 09 Jun, 2020 1 commit
    • Clemens Backes's avatar
      [utils] Add OwnedVector::NewForOverwrite · ff2e485f
      Clemens Backes authored
      The existing {OwnedVector::New} value-initializes all elements, which
      means zeroing them in case on integral types. In many cases though we
      know that we will overwrite the content anyway, so the initialization is
      redundant.
      In the case of assembly buffers for wasm compilation, this zeroing
      showed up with several percent of execution times for some benchmarks.
      
      Hence this CL introduces a new {OwnedVector::NewForOverwrite} (along the
      lines of {std::make_unique_for_overwrite}), which only
      default-initializes the values (meaning no initialization for integral
      values).
      
      R=thibaudm@chromium.org
      
      Bug: v8:10576
      Change-Id: I8d2806088acebe8a264dea2c7ed74b0423671d4f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237140
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68268}
      ff2e485f
  4. 03 Jun, 2020 1 commit
    • Andreas Haas's avatar
      [wasm] Introduce v8.wasm.detailed trace event category · d529da01
      Andreas Haas authored
      This CL repurposes the v8.wasm trace event category, and introduces
      additionally the v8.wasm.detailed category.
      
      The v8.wasm category is enabled by default and captures core wasm events
      like validation, compilation, instantiation, and important operations
      like grow-memory and tier-up timings.
      
      The v8.wasm.detailed category is disabled by default. It captures all
      events the previous v8.wasm category captured, like compilation of
      single functions, time needed for register allocation, ...
      
      This CL splits these categories to allow enabling the v8.wasm category
      in telemetry benchmarks to calculate compile time and other metrics
      from traces of telemetry runs.
      
      R=ecmziegler@chromium.org
      
      Bug: chromium:1084929
      Change-Id: Ida58b8f344b0ccb6ee1210e259c3e0e993eff497
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2210230
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarEmanuel Ziegler <ecmziegler@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68156}
      d529da01
  5. 11 May, 2020 1 commit
    • Clemens Backes's avatar
      [wasm][debug] Make recompilation isolate-independent · 14984372
      Clemens Backes authored
      Passing an isolate to {RecompileNativeModule} feels wrong, since
      compilation and the generated code are totally isolate-independent. In
      fact, the isolate is only used for updating counters.
      Instead of passing the counters instead, this CL just refactors the code
      to support a nullptr for the counters everywhere (some code paths
      already supported that). The few recompilation would not make a
      significant difference in the histograms anyway, and even have the risk
      of skewing the data.
      
      Drive-by 1: Rename {TierUp} to {StartTierUp} and update comments.
      Drive-by 2: Remove non-actionable TODO.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10359
      Change-Id: Ic027f939bbc55398b90784922130fe1fe5573b0c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187638Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67708}
      14984372
  6. 05 May, 2020 1 commit
    • Clemens Backes's avatar
      [wasm] Remove interpreter entry code · 61c2a0f4
      Clemens Backes authored
      This removes the interpreter entry stubs, which are used to redirect
      specific wasm functions to the interpreter. It is only needed when
      mixing JS code with interpreted Wasm code, otherwise the test functions
      just call the interpreter directly.
      Thus a lot of tests that contain such interaction between JS and Wasm
      need to be restricted to execute in Liftoff and TurboFan only.
      
      After this CL, the WASM_INTERPRETER_ENTRY frame type and the
      corresponding WasmInterpreterEntryFrame are dead, and will be removed in
      a follow-up CL.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10389
      Change-Id: I8e50d350dbc2afcc1cddaeb98baf23711117af2d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172962
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67559}
      61c2a0f4
  7. 28 Apr, 2020 1 commit
    • Clemens Backes's avatar
      [wasm] Remove the --wasm-interpret-all flag · 6f4991fa
      Clemens Backes authored
      The interpreter will be moved to be test-only, hence
      --wasm-interpret-all also needs to be removed.
      
      Since we don't have any non-compiling tier any more, we also remove the
      implication from --jitless to --wasm-lazy-compilation. Instead, we add
      another CHECK that we can't be in jitless mode if we trigger any wasm
      compilation.
      
      All tests that just ran other tests and additionally passed
      --wasm-interpret-all become redundant and are deleted. Also all
      regression tests that explicitly specify --wasm-interpret-all are not
      needed any more.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10389
      Change-Id: I5ddf20a842117a6c05e277a5308f5cfe42e6bfa5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2164792
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67419}
      6f4991fa
  8. 14 Apr, 2020 2 commits
    • Clemens Backes's avatar
      [wasm] Store whether code was generated for debugging · 4721585b
      Clemens Backes authored
      This adds a flag to {WasmCode} objects to store whether this code was
      generated for debugging. This flag can be set for Liftoff code (in which
      case the code will e.g. have an extended prologue for debugging), but it
      can also be set for TurboFan, in case Liftoff bailed out when producing
      the debugging code.
      
      Having this flag allows us to remove the hack to pass the compilation
      results to {OnFinishedUnits} just to check whether we actually wanted to
      compile Liftoff functions.
      
      Drive-by: Replace the {ReachedRecompilationTierField} by a
      {MissingRecompilationField}, because all we need to know is if we are
      still waiting for that function to get recompiled.
      
      R=ahaas@chromium.org
      
      Bug: v8:10330,v8:10410
      Change-Id: Ia023df8955a60d9f5595a6cb2737e14d83baf716
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2142259
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67119}
      4721585b
    • Clemens Backes's avatar
      [wasm][debug] Store "for debugging" flag on compilation unit · e0433f7d
      Clemens Backes authored
      Before the "debug" flag was stored on the {CompilationEnv}. But each
      background compilation task only gets the {CompilationEnv} once when
      starting compilation, so by the time it picks up the "Liftoff for
      debugging" compilation jobs, it might still compile them without the
      debug flag being set. This leads to flakes in the "debug-step-into-wasm"
      test, because we won't stop in the function prologue when stepping in
      (because the function prologue does not check the "hook on function
      call" flag if debug mode was not enabled).
      
      This CL does not increase the size of a compilation unit, since both the
      tier and the debug flag only need a single byte each.
      
      As a nice side effect, this change allows us to remove the lock in
      {CreateCompilationEnv}, because no modifyable flag is read any more.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10410
      Change-Id: Ic296ea0c4dd1d4dedde119f0536e87e5d301b5a1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2144116Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67115}
      e0433f7d
  9. 03 Apr, 2020 1 commit
    • Clemens Backes's avatar
      [wasm] Split adding code from publishing · e8ff83dd
      Clemens Backes authored
      Adding code can happen in parallel (it includes copying the code to the
      code region and relocation it). Publishing happens under one lock per
      native module though. We eventually want to avoid blocking on this lock
      for too long. This CL prepares that by splitting the actions of adding
      and publishing code.
      
      R=ahaas@chromium.org
      
      Bug: v8:10330, v8:10387
      Change-Id: Iddbdadfe32e691bbf5e7b387ea947579bc3376f3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134372
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66979}
      e8ff83dd
  10. 27 Feb, 2020 1 commit
  11. 09 Jan, 2020 1 commit
  12. 02 Jan, 2020 1 commit
  13. 27 Nov, 2019 1 commit
  14. 26 Nov, 2019 1 commit
  15. 13 Nov, 2019 1 commit
  16. 23 Sep, 2019 1 commit
  17. 10 Sep, 2019 1 commit
  18. 30 Jul, 2019 1 commit
  19. 29 Jul, 2019 2 commits
  20. 25 Jul, 2019 2 commits
  21. 19 Jul, 2019 1 commit
  22. 16 Jul, 2019 1 commit
    • Thibaud Michaud's avatar
      Revert "reland [wasm] Compile JS to WASM wrappers asynchronously" · fac5898d
      Thibaud Michaud authored
      This reverts commit 117ddc8f.
      
      Reason for revert: The isolate is needed for accessing builtins, and can die during async compilation.
      
      Original change's description:
      > reland [wasm] Compile JS to WASM wrappers asynchronously
      > 
      > The context was not set during streaming compilation.
      > The initial upload is the original CL and patch set 1 is the fix.
      > 
      > Original CL:
      > 
      > > [wasm] Compile JS to WASM wrappers asynchronously
      > >
      > > R=mstarzinger@chromium.org, ahaas@chromium.org
      > >
      > > Bug: v8:9231
      > > Change-Id: I9e18073bbe25bf8c9c5f9ace102316e6209d0459
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1669699
      > > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#62672}
      > 
      > R=​mstarzinger@chromium.org, ahaas@chromium.org
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
      > Bug: v8:9231
      > Change-Id: I61fc11a6de54cc6e93f3600487a89fa5d2350f0e
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701850
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      > Auto-Submit: Thibaud Michaud <thibaudm@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#62721}
      
      TBR=mstarzinger@chromium.org,ahaas@chromium.org,thibaudm@chromium.org
      
      Change-Id: Ie258317f04a944e8e08993dbffb524f722cceddc
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9231
      Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1704094Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62741}
      fac5898d
  23. 15 Jul, 2019 1 commit
  24. 12 Jul, 2019 2 commits
  25. 18 Jun, 2019 1 commit
  26. 05 Jun, 2019 1 commit
    • Thibaud Michaud's avatar
      [wasm] Early compilation of import wrappers · b15b2c91
      Thibaud Michaud authored
      Compile import wrappers during module compilation by introducing import
      wrapper compilation units, the goal being to reduce instantiation time.
      
      For each wrapper, we assume the imported function is going to be a
      kJSFunctionArityMatchSloppy at instantiation time, which should be the
      most common case. If the function turns out to have a different kind the
      wrapper is going to be recompiled with the correct kind during instantiation.
      
      R=ahaas@chromium.org, clemensh@chromium.org
      CC=titzer@chromium.org
      
      Bug: v8:9231
      Change-Id: Ieb050b09d1c19f2a5a3e59132a1864dadb06775d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1630685
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61993}
      b15b2c91
  27. 21 May, 2019 2 commits
  28. 20 May, 2019 1 commit
  29. 17 May, 2019 2 commits
  30. 29 Apr, 2019 4 commits
    • Clemens Hammacher's avatar
      [wasm] Remove {TurbofanWasmCompilationUnit} · 884a45a7
      Clemens Hammacher authored
      {TurbofanWasmCompilationUnit} does not store any data except for a
      pointer back to the {WasmCompilationUnit}, and has a single method only.
      Thus remove it, and replace it by a static function.
      This saves one field per compilation unit.
      
      R=mstarzinger@chromium.org
      
      Change-Id: I2bcb9246c65e6971aa747488ea631886ca3bc037
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587388
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61084}
      884a45a7
    • Clemens Hammacher's avatar
      [wasm] Remove {InterpreterCompilationUnit} · ea2de39f
      Clemens Hammacher authored
      {InterpreterCompilationUnit} does not store any data except for a
      pointer back to the {WasmCompilationUnit}, and has a single method only.
      Thus remove it, and replace it by a static function.
      This saves one field per compilation unit. We can probably also remove
      {TurbofanWasmCompilationUnit} in a similar way, which I will do in a
      follow-up CL.
      
      R=mstarzinger@chromium.org
      
      Change-Id: I8fc2e18366757573499fd57f909ec8222c27be38
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587387
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61083}
      ea2de39f
    • Clemens Hammacher's avatar
      [cleanup] Use Vector::begin instead of Vector::start · 4b0f9c85
      Clemens Hammacher authored
      Our {Vector} template provides both {start} and {begin} methods. They
      return exactly the same value. Since the {begin} method is needed for
      iteration, and is also what standard containers provide, this CL
      switches all uses of the {start} method to use {begin} instead.
      
      Patchset 1 was auto-generated by using this clang AST matcher:
          callExpr(
              callee(
                cxxMethodDecl(
                  hasName("start"),
                  ofClass(hasName("v8::internal::Vector")))
              ),
              argumentCountIs(0))
      
      Patchset 2 was created by running clang-format. Patchset 3 then
      removes the now unused {Vector::start} method.
      
      R=jkummerow@chromium.org
      TBR=mstarzinger@chromium.org,yangguo@chromium.org,verwaest@chromium.org
      
      Bug: v8:9183
      Change-Id: Id9f01c92870872556e2bb3f6d5667463b0e3e5c6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587381Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61081}
      4b0f9c85
    • Clemens Hammacher's avatar
      [wasm] Remove {LiftoffCompilationUnit} · 3e1b3502
      Clemens Hammacher authored
      {LiftoffCompilationUnit} does not store any data, and has a single
      method only. Thus remove it, and replace it by a static function.
      This saves one field per compilation unit. We can probably also remove
      {TurbofanWasmCompilationUnit} and {InterpreterCompilationUnit} in a
      similar way, which I will do in follow-up CLs.
      
      R=mstarzinger@chromium.org
      
      Change-Id: I5e1a7d4245fd8bce4862cc83c96f9dac8e0c635e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587386Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61080}
      3e1b3502