1. 08 Nov, 2021 4 commits
  2. 05 Nov, 2021 4 commits
  3. 04 Nov, 2021 2 commits
    • Andreas Haas's avatar
      [wasm] Do not serialize modules that don't contain TurboFan code · 272e5a87
      Andreas Haas authored
      The wasm serialization format only contains TurboFan code. All other
      functions are only represented by placeholders. With this CL
      serialization fails if the serialized module does not contain any
      TurboFan functions and would therefore consist only of placeholders.
      
      This is a defense in depth approach, because ideally serialization
      only gets triggered when TurboFan code is available. However, in some
      scenarios like debugging it can happen that modules without TurboFan
      code get serialized.
      
      Bug: v8:12281
      Change-Id: Ib05430ff89eb2317da80fc0d086ce1d7ab0e919d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3212510
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77715}
      272e5a87
    • Jakob Kummerow's avatar
      [wasm-gc] Fix struct/array visiting · 6b108811
      Jakob Kummerow authored
      The old "gc-safe" implementation to get the off-heap type information
      wasn't quite as gc-safe as it needs to be.
      Due to parallel compaction, we shouldn't check for forwarding pointers;
      instead we should rely on the old location of the Foreign, but make sure
      not to look at its Map (which might be a forwarding pointer).
      
      Bug: v8:12185
      Change-Id: I4570b00a5300a0d7ed8c042fa21d355373e0e691
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3260513
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77707}
      6b108811
  4. 03 Nov, 2021 5 commits
    • Nico Hartmann's avatar
      Revert "Reland "[torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants"" · 6a3dc05f
      Nico Hartmann authored
      This reverts commit a3480b55.
      
      Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20-%20debug%20-%20header%20includes/22234/overview
      
      Original change's description:
      > Reland "[torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants"
      >
      > This is a reland of 7366f6e2
      >
      > The test that failed after the initial commit was just flaky and has
      > been fixed; see https://bugs.chromium.org/p/v8/issues/detail?id=12341
      >
      > Original change's description:
      > > [torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants
      > >
      > > Torque currently generates constants like kStartOfWeakFieldsOffset and
      > > kEndOfStrongFieldsOffset, which can be used when writing custom
      > > BodyDescriptors. However, these offsets have some potentially confusing
      > > behaviors:
      > >
      > > * They don't take inheritance into account and describe only the fields
      > >   defined by the current class itself, so there might be (for example)
      > >   strong fields before kStartOfStrongFieldsOffset if they were defined
      > >   by a superclass.
      > > * kStartOfWeakFieldsOffset points to the first field defined in Torque
      > >   using the keyword `weak`, which indicates fields with *custom*
      > >   weakness semantics (those that should be visited with
      > >   IterateCustomWeakPointers), not those that may contain standard weak
      > >   pointers (visited with IterateMaybeWeakPointers). (As a follow-up, I'd
      > >   like to also rename `weak` to `@customWeak`.)
      > >
      > > Given that these constants have very low usage and somewhat bizarre
      > > semantics, I propose that we remove them. This change does so, and
      > > updates the existing usages to either define the required constants
      > > directly in C++ or not use them. I know that defining these constants in
      > > C++ is more brittle, but I think that brittle and clear is better than
      > > automatic and incomprehensible.
      > >
      > > Bug: v8:7793
      > > Change-Id: I87f8c85ccae4027f61ac73d4e7e4e2820e92003b
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3199731
      > > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > > Cr-Commit-Position: refs/heads/main@{#77411}
      >
      > Bug: v8:7793
      > Change-Id: Iefdd4014ce4b85b48c19ead79a0316774a5ecd45
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3258082
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/main@{#77688}
      
      Bug: v8:7793
      Change-Id: I7b9667268901b7aef85a95832d40860056e61050
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259656Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Owners-Override: Nico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77689}
      6a3dc05f
    • Seth Brenith's avatar
      Reland "[torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants" · a3480b55
      Seth Brenith authored
      This is a reland of 7366f6e2
      
      The test that failed after the initial commit was just flaky and has
      been fixed; see https://bugs.chromium.org/p/v8/issues/detail?id=12341
      
      Original change's description:
      > [torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants
      >
      > Torque currently generates constants like kStartOfWeakFieldsOffset and
      > kEndOfStrongFieldsOffset, which can be used when writing custom
      > BodyDescriptors. However, these offsets have some potentially confusing
      > behaviors:
      >
      > * They don't take inheritance into account and describe only the fields
      >   defined by the current class itself, so there might be (for example)
      >   strong fields before kStartOfStrongFieldsOffset if they were defined
      >   by a superclass.
      > * kStartOfWeakFieldsOffset points to the first field defined in Torque
      >   using the keyword `weak`, which indicates fields with *custom*
      >   weakness semantics (those that should be visited with
      >   IterateCustomWeakPointers), not those that may contain standard weak
      >   pointers (visited with IterateMaybeWeakPointers). (As a follow-up, I'd
      >   like to also rename `weak` to `@customWeak`.)
      >
      > Given that these constants have very low usage and somewhat bizarre
      > semantics, I propose that we remove them. This change does so, and
      > updates the existing usages to either define the required constants
      > directly in C++ or not use them. I know that defining these constants in
      > C++ is more brittle, but I think that brittle and clear is better than
      > automatic and incomprehensible.
      >
      > Bug: v8:7793
      > Change-Id: I87f8c85ccae4027f61ac73d4e7e4e2820e92003b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3199731
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/main@{#77411}
      
      Bug: v8:7793
      Change-Id: Iefdd4014ce4b85b48c19ead79a0316774a5ecd45
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3258082Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/main@{#77688}
      a3480b55
    • Andreas Haas's avatar
      [wasm] Fix logic error in disabling tierup for debug code · ea9fb04d
      Andreas Haas authored
      R=manoskouk@chromium.org
      
      Bug: v8:12281
      Change-Id: I7f5c231683c45e7c87c649246759f76464f4e835
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259646
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77687}
      ea9fb04d
    • Junliang Yan's avatar
      aix: fix atomic compare and swap for liftoff · e8cdd505
      Junliang Yan authored
      Change-Id: Ie46687a1af834b9c1a6c8fa5bcf5badb61cc1647
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259645Reviewed-by: 's avatarMilad Fa <mfarazma@redhat.com>
      Commit-Queue: Junliang Yan <junyan@redhat.com>
      Cr-Commit-Position: refs/heads/main@{#77686}
      e8cdd505
    • Thibaud Michaud's avatar
      [wasm] Fix wrong DCHECK in WasmExceptionPackage · ebc74954
      Thibaud Michaud authored
      We only expect the "wasm_exception_values_symbol" property to be a fixed
      array if the property actually exists. If the property is not found,
      JSReceiver::GetProperty returns "undefined", so skip the check in this
      case.
      
      R=clemensb@chromium.org
      
      Bug: chromium:1262582
      Change-Id: I28d7891064bdd7632ff1a4c94ba021163401fd88
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3244416
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77685}
      ebc74954
  5. 02 Nov, 2021 4 commits
  6. 30 Oct, 2021 1 commit
  7. 29 Oct, 2021 2 commits
  8. 28 Oct, 2021 2 commits
  9. 27 Oct, 2021 3 commits
  10. 26 Oct, 2021 2 commits
  11. 25 Oct, 2021 1 commit
  12. 21 Oct, 2021 1 commit
    • Ng Zhi An's avatar
      [wasm-relaxed-simd][x64] Prototype relaxed min and max · c3f346b7
      Ng Zhi An authored
      Relaxed f32x4 and f64x2 min and max.
      
      These instructions only guarantee results when the inputs are non nans,
      and when the inputs are not 0s of opposite signs.
      
      Reuse existing float binop testing harnesses and add special checks for
      such constants when relaxed operations are being tested.
      
      Drive-by rename of x64 instruction codes to be Minps/Maxps/Minpd/Maxpd
      since they map down exactly to a single instruction.
      
      Bug: v8:12284
      Change-Id: I1449dbfa87935a96d7d260db22667ab7b9e86601
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218196Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77484}
      c3f346b7
  13. 19 Oct, 2021 1 commit
  14. 18 Oct, 2021 1 commit
    • Manos Koukoutos's avatar
      [wasm][turbofan] Improve inlining heuristics · bce44108
      Manos Koukoutos authored
      This CL improves wasm inlining heuristics in Turbofan, for an average
      8,5% performance improvement in selected benchmarks.
      
      Changes:
      - In WasmInliner::Reduce(), only collect inlining candidates into a
        priority queue, according to WasmInliner::LexicographicOrdering.
        Move actual inlining to Finalize().
      - Remove the InlineFirstFew heuristic. Add two limits to inlining:
        Maximum relative size increase (reversely proportional to the function
        size), and absolute size increase.
      - Pass information about call frequency from liftoff-collected feedback
        to the WasmInliner though the wasm module.
      - Run wasm inlining along other optimizations in the pipeline.
      - Split inlining and speculative inlining tests.
      
      Bug: v8:7748, v8:12166
      Change-Id: Iccee22093db765981889a24451fb458dfce1f1a6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3222764Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77428}
      bce44108
  15. 15 Oct, 2021 6 commits
    • Manos Koukoutos's avatar
      [wasm-gc] Add option to skip array bounds checks · 14dc3572
      Manos Koukoutos authored
      Bug: v8:7748
      Change-Id: Id09544a9f55843d2474b6114da9d42e1ec994cff
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226322
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77417}
      14dc3572
    • Leszek Swirski's avatar
      Revert "[torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants" · 6025b260
      Leszek Swirski authored
      This reverts commit 7366f6e2.
      
      Reason for revert: Speculative revert for cctest/test-debug-helper/GetObjectProperties failures
      https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket/8833300564873660401/+/u/Check/GetObjectProperties
      
      Original change's description:
      > [torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants
      >
      > Torque currently generates constants like kStartOfWeakFieldsOffset and
      > kEndOfStrongFieldsOffset, which can be used when writing custom
      > BodyDescriptors. However, these offsets have some potentially confusing
      > behaviors:
      >
      > * They don't take inheritance into account and describe only the fields
      >   defined by the current class itself, so there might be (for example)
      >   strong fields before kStartOfStrongFieldsOffset if they were defined
      >   by a superclass.
      > * kStartOfWeakFieldsOffset points to the first field defined in Torque
      >   using the keyword `weak`, which indicates fields with *custom*
      >   weakness semantics (those that should be visited with
      >   IterateCustomWeakPointers), not those that may contain standard weak
      >   pointers (visited with IterateMaybeWeakPointers). (As a follow-up, I'd
      >   like to also rename `weak` to `@customWeak`.)
      >
      > Given that these constants have very low usage and somewhat bizarre
      > semantics, I propose that we remove them. This change does so, and
      > updates the existing usages to either define the required constants
      > directly in C++ or not use them. I know that defining these constants in
      > C++ is more brittle, but I think that brittle and clear is better than
      > automatic and incomprehensible.
      >
      > Bug: v8:7793
      > Change-Id: I87f8c85ccae4027f61ac73d4e7e4e2820e92003b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3199731
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/main@{#77411}
      
      Bug: v8:7793
      Change-Id: Ia12b5d773db35739283ca8871d3dd6922413cc82
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226783
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Owners-Override: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77415}
      6025b260
    • Manos Koukoutos's avatar
      [wasm-gc][liftoff] GetUnusedRegister before fetching stack slots · 5f6c9fc5
      Manos Koukoutos authored
      GetUnusedRegister may spill registers and thus modify stack slots.
      Therefore, we have to call it before fetching stack slots.
      This is another instance of
      https://chromium-review.googlesource.com/c/v8/v8/+/3217199.
      
      Bug: v8:7748
      Change-Id: I9ff28b26f2dce93ef7b71c1100d9bf88f7c2f7c6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226327Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77414}
      5f6c9fc5
    • Clemens Backes's avatar
      [wasm] Add trace events for wrapper compilation · 91111a40
      Clemens Backes authored
      This adds a few more trace events, also tracing the number of wrappers.
      This can help to understand instantiation time better.
      
      R=ahaas@chromium.org
      
      Bug: v8:12287
      Change-Id: Ic1a03b2e278af64908f0dc45cd5db60ecf7c79f5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226323Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77412}
      91111a40
    • Seth Brenith's avatar
      [torque] Don't generate k(?:Start|End)Of\w+FieldsOffset constants · 7366f6e2
      Seth Brenith authored
      Torque currently generates constants like kStartOfWeakFieldsOffset and
      kEndOfStrongFieldsOffset, which can be used when writing custom
      BodyDescriptors. However, these offsets have some potentially confusing
      behaviors:
      
      * They don't take inheritance into account and describe only the fields
        defined by the current class itself, so there might be (for example)
        strong fields before kStartOfStrongFieldsOffset if they were defined
        by a superclass.
      * kStartOfWeakFieldsOffset points to the first field defined in Torque
        using the keyword `weak`, which indicates fields with *custom*
        weakness semantics (those that should be visited with
        IterateCustomWeakPointers), not those that may contain standard weak
        pointers (visited with IterateMaybeWeakPointers). (As a follow-up, I'd
        like to also rename `weak` to `@customWeak`.)
      
      Given that these constants have very low usage and somewhat bizarre
      semantics, I propose that we remove them. This change does so, and
      updates the existing usages to either define the required constants
      directly in C++ or not use them. I know that defining these constants in
      C++ is more brittle, but I think that brittle and clear is better than
      automatic and incomprehensible.
      
      Bug: v8:7793
      Change-Id: I87f8c85ccae4027f61ac73d4e7e4e2820e92003b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3199731Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/main@{#77411}
      7366f6e2
    • Clemens Backes's avatar
      [wasm] Trace NativeModuleCache accesses and hits · 32008465
      Clemens Backes authored
      This makes it easier to see if a module is taken from the cache.
      
      R=thibaudm@chromium.org
      
      Bug: v8:12287
      Change-Id: I6b7acf15f1aa20f6531d746d37890608462606de
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226326
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77410}
      32008465
  16. 14 Oct, 2021 1 commit