1. 20 Apr, 2021 7 commits
  2. 19 Apr, 2021 13 commits
  3. 17 Apr, 2021 1 commit
    • Ng Zhi An's avatar
      Revert "[wasm-simd] Canonicalize shuffles when creating TurboFan graph" · ede5e814
      Ng Zhi An authored
      This reverts commit d16eefe0.
      
      It is not correct to check for node equality during the graph
      construction phase, because we can have optimizations that will combine
      same nodes. So it can happen that in wasm-compiler, the inputs to
      shuffle are not the same, so we canonicalize using that knowledge that
      it will not be the same, and allow indices > 15. But later we can have
      optimizations that combine the 2 inputs (e.g. splat of the same
      constants), and the instruction selector will see that the input nodes
      are the same.
      
      Bug: v8:11542,chromium:1199662
      Change-Id: I21c175f4707708038710147f64d687d1b14c6ecc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2829986
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74017}
      ede5e814
  4. 16 Apr, 2021 16 commits
    • Shu-yu Guo's avatar
      Revert "[fastcall] Add support for leaf interface type checks" · 19467237
      Shu-yu Guo authored
      This reverts commit 6124a534.
      
      Reason for revert: On suspicion of blocking V8 roll: https://ci.chromium.org/ui/p/chromium/builders/try/win10_chromium_x64_rel_ng/839568/overview
      
      Original change's description:
      > [fastcall] Add support for leaf interface type checks
      >
      > This CL adds an IsTemplateForApiObject method to FunctionTemplate
      > allowing the embedder to check whether a given API object was
      > instantiated by this template without including parent templates
      > in the search. It also replaces the v8::ApiObject in the fast API
      > with a raw v8::Value pointer to allow use of standard C++ casts.
      >
      > Bug: chromium:1052746
      > Change-Id: I0812ec8b4daaa5f5005aabf10b63e1e84e0b8f03
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595310
      > Commit-Queue: Maya Lekova <mslekova@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Camillo Bruni <cbruni@chromium.org>
      > Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73999}
      
      Bug: chromium:1052746
      Change-Id: Ic99ec616310f0f75800c3dad393b5d2d685b76ab
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2829988
      Auto-Submit: Shu-yu Guo <syg@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#74016}
      19467237
    • Hannes Payer's avatar
      Separate array length and capacity errors from OOMs. · 7564f658
      Hannes Payer authored
      Bug: chromium:1198188
      Change-Id: I7f4a9e67a435fcb4b564599c5dd27c386bef143b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831480
      Commit-Queue: Hannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74015}
      7564f658
    • Toon Verwaest's avatar
      [keys] Fix dictionary-mode prototype invalidation · bbc32bd2
      Toon Verwaest authored
      When the enumerability flag is flipped we need to invalidate the
      prototype info.
      
      Bug: chromium:1163499
      Change-Id: Iceeaa5fc47eebfe7d333c9eb594bf0763e6cef92
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831871
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74013}
      bbc32bd2
    • Leszek Swirski's avatar
      Reland "[codegen] Add static interface descriptors" · 2871e05c
      Leszek Swirski authored
      This is a reland of ae0752df
      
      Reland fixes:
      
        * Remove UNREACHABLE() from constexpr switch, since we don't have a
          CONSTEXPR_UNREACHABLE() (it's ok, the switch is exhaustive for the
          enum anyway).
        * Fix IsRegisterArray trait to use public inheritance and size_t for
          std::array size.
      
      Original change's description:
      > [codegen] Add static interface descriptors
      >
      > Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      > static constexpr getters for a descriptor's registers, parameter counts,
      > and so on. Each CallInterfaceDescriptor subclass is changed to extend
      > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      > extending CallInterfaceDescriptor to still provide a dynamic lookup
      > where needed.
      >
      > StaticCallInterfaceDescriptor provides a couple of customisation points,
      > where it reads its CRTP derived descriptor's static fields and
      > functions, with default fallbacks where appropriate. With these
      > customisation points, the definition of CallInterfaceDescriptor
      > subclasses is simplified to:
      >
      >     a) Providing parameter names (as before)
      >     b) Providing parameter types (as before)
      >     c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
      >        static booleans on the class.
      >     d) Optionally providing a `registers()` method that returns a
      >        std::array<Register, N> of registers that may be used for
      >        parameters (if not provided, this defaults to the implementation
      >        specific default register set).
      >
      > Parameter registers (and register count) are automagically set based on
      > the number of parameters and number of given registers, with extra magic
      > to ignore no_reg registers (to reduce ia32 special casing). The
      > CallInterfaceDescriptorData is initialized based on these static
      > functions, rather than manual per-descriptor initializers.
      >
      > This allows us to skip loading descriptors dynamically for CallBuiltin
      > in Sparkplug, and instead lets us use a bit of template magic to
      > statically set up arguments for the calls. Any other users of statically
      > known descriptors will also benefit, thanks to C++ picking the static
      > methods over the dynamic methods on the base class when available.
      >
      > Because we can remove various virtual functions and trigger heavier
      > inlining of constantly known values, binary size slightly decreases with
      > this change.
      >
      > Note that torque-generated descriptors are changed to use the same magic,
      > rather than having Torque-specific magic, for consistency.
      >
      > Bug: v8:11420
      > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      > Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73996}
      
      TBR=nicohartmann@chromium.org,clemensb@chromium.org,ishell@chromium.org,clemensb@chromium.org
      
      Bug: v8:11420
      Change-Id: Icd1f6cdb3c178e74460044b1e9623139929ceba8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831872Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74010}
      2871e05c
    • Benedikt Meurer's avatar
      [inspector] Don't show __proto__ in previews of embedder objects. · f4573682
      Benedikt Meurer authored
      This change slipped into https://crrev.com/c/2820970 and wasn't
      intended. We actually need to rule out __proto__ here explicitly,
      otherwise it starts showing up in previews for embedder objects
      (i.e. for HTMLAllCollection, etc.).
      
      Bug: chromium:1197019
      Change-Id: Iadde73747c157c2b5b013b11a6b8a30cc4394a7e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831481
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarPhilip Pfaffe <pfaffe@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74009}
      f4573682
    • Yahan Lu's avatar
      [riscv64] Fix NaN related issue · eac97a97
      Yahan Lu authored
      Optimize FPUCanonicalizeNaN
      Float Round reutrn qNan when input is Nan
      FMaxMin return qNan with Nan inputs
      
      Change-Id: I7568be3d27d030e49f292a956b3084b54bdf8577
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814725
      Commit-Queue: Brice Dobry <brice.dobry@futurewei.com>
      Reviewed-by: 's avatarBrice Dobry <brice.dobry@futurewei.com>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74006}
      eac97a97
    • Thibaud Michaud's avatar
      [wasm][liftoff] Fix indexing in loop stack check · 60dfe651
      Thibaud Michaud authored
      The "num_exceptions" field of the control block must be updated before
      entering the stack check, because it is used in
      "GetCurrentDebugSideTable" to compute the correct indices for the debug
      side table.
      
      R=clemensb@chromium.org
      
      Bug: chromium:1199526
      Change-Id: I54f1e4244bf84d0a78b47a764fedc83b54758d01
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831483
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74003}
      60dfe651
    • Leszek Swirski's avatar
      Revert "[codegen] Add static interface descriptors" · 5dea60d6
      Leszek Swirski authored
      This reverts commit ae0752df.
      
      Reason for revert: Predictably, constexpr issues on non-clang compilers.
      
      Original change's description:
      > [codegen] Add static interface descriptors
      >
      > Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      > static constexpr getters for a descriptor's registers, parameter counts,
      > and so on. Each CallInterfaceDescriptor subclass is changed to extend
      > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      > extending CallInterfaceDescriptor to still provide a dynamic lookup
      > where needed.
      >
      > StaticCallInterfaceDescriptor provides a couple of customisation points,
      > where it reads its CRTP derived descriptor's static fields and
      > functions, with default fallbacks where appropriate. With these
      > customisation points, the definition of CallInterfaceDescriptor
      > subclasses is simplified to:
      >
      >     a) Providing parameter names (as before)
      >     b) Providing parameter types (as before)
      >     c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
      >        static booleans on the class.
      >     d) Optionally providing a `registers()` method that returns a
      >        std::array<Register, N> of registers that may be used for
      >        parameters (if not provided, this defaults to the implementation
      >        specific default register set).
      >
      > Parameter registers (and register count) are automagically set based on
      > the number of parameters and number of given registers, with extra magic
      > to ignore no_reg registers (to reduce ia32 special casing). The
      > CallInterfaceDescriptorData is initialized based on these static
      > functions, rather than manual per-descriptor initializers.
      >
      > This allows us to skip loading descriptors dynamically for CallBuiltin
      > in Sparkplug, and instead lets us use a bit of template magic to
      > statically set up arguments for the calls. Any other users of statically
      > known descriptors will also benefit, thanks to C++ picking the static
      > methods over the dynamic methods on the base class when available.
      >
      > Because we can remove various virtual functions and trigger heavier
      > inlining of constantly known values, binary size slightly decreases with
      > this change.
      >
      > Note that torque-generated descriptors are changed to use the same magic,
      > rather than having Torque-specific magic, for consistency.
      >
      > Bug: v8:11420
      > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      > Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73996}
      
      Bug: v8:11420
      Change-Id: Ie5469c9253fc140590ac30b72db6eb1d93f86806
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831485
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#74000}
      5dea60d6
    • Maya Lekova's avatar
      [fastcall] Add support for leaf interface type checks · 6124a534
      Maya Lekova authored
      This CL adds an IsTemplateForApiObject method to FunctionTemplate
      allowing the embedder to check whether a given API object was
      instantiated by this template without including parent templates
      in the search. It also replaces the v8::ApiObject in the fast API
      with a raw v8::Value pointer to allow use of standard C++ casts.
      
      Bug: chromium:1052746
      Change-Id: I0812ec8b4daaa5f5005aabf10b63e1e84e0b8f03
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595310
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73999}
      6124a534
    • Maya Lekova's avatar
      Revert "[heap] Do not scan main thread handles when starting marking" · 45e24fd6
      Maya Lekova authored
      This reverts commit dcd91455.
      
      Reason for revert: Breaks TSAN no-concurrent-marking - https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/3341/overview
      
      Original change's description:
      > [heap] Do not scan main thread handles when starting marking
      >
      > We do not need to scan main thread handles when starting incremental
      > marking. This reduces the time to start incremental marking.
      >
      > Bug: v8:11645
      > Change-Id: Ib99a13e7875f50fbfe5346ac0e186d8960ea1337
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826124
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73994}
      
      Bug: v8:11645
      Change-Id: I5e2325ef326b79b1807b52384cc5473d126ca6cb
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831482
      Auto-Submit: Maya Lekova <mslekova@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#73997}
      45e24fd6
    • Leszek Swirski's avatar
      [codegen] Add static interface descriptors · ae0752df
      Leszek Swirski authored
      Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      static constexpr getters for a descriptor's registers, parameter counts,
      and so on. Each CallInterfaceDescriptor subclass is changed to extend
      StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      extending CallInterfaceDescriptor to still provide a dynamic lookup
      where needed.
      
      StaticCallInterfaceDescriptor provides a couple of customisation points,
      where it reads its CRTP derived descriptor's static fields and
      functions, with default fallbacks where appropriate. With these
      customisation points, the definition of CallInterfaceDescriptor
      subclasses is simplified to:
      
          a) Providing parameter names (as before)
          b) Providing parameter types (as before)
          c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
             static booleans on the class.
          d) Optionally providing a `registers()` method that returns a
             std::array<Register, N> of registers that may be used for
             parameters (if not provided, this defaults to the implementation
             specific default register set).
      
      Parameter registers (and register count) are automagically set based on
      the number of parameters and number of given registers, with extra magic
      to ignore no_reg registers (to reduce ia32 special casing). The
      CallInterfaceDescriptorData is initialized based on these static
      functions, rather than manual per-descriptor initializers.
      
      This allows us to skip loading descriptors dynamically for CallBuiltin
      in Sparkplug, and instead lets us use a bit of template magic to
      statically set up arguments for the calls. Any other users of statically
      known descriptors will also benefit, thanks to C++ picking the static
      methods over the dynamic methods on the base class when available.
      
      Because we can remove various virtual functions and trigger heavier
      inlining of constantly known values, binary size slightly decreases with
      this change.
      
      Note that torque-generated descriptors are changed to use the same magic,
      rather than having Torque-specific magic, for consistency.
      
      Bug: v8:11420
      Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73996}
      ae0752df
    • Dominik Inführ's avatar
      [heap] Do not scan main thread handles when starting marking · dcd91455
      Dominik Inführ authored
      We do not need to scan main thread handles when starting incremental
      marking. This reduces the time to start incremental marking.
      
      Bug: v8:11645
      Change-Id: Ib99a13e7875f50fbfe5346ac0e186d8960ea1337
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826124Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73994}
      dcd91455
    • Camillo Bruni's avatar
      Reland "[api] Add v8::Isolate::ThrowError helper" · c685df32
      Camillo Bruni authored
      - This is a reland of d435eaa5
      - Fix vtunedomain
      
      Original change's description:
      > [api] Add v8::Isolate::ThrowError helper
      >
      > Add a ThrowError helper to encourage throwing full Error objects
      > instead of just v8::Strings.
      >
      > Bug: v8:11195
      > Change-Id: I15d75b1d39b817de3b9026a836b57a70d7c16a28
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2811738
      > Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      > Reviewed-by: Dan Elphick <delphick@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73958}
      
      Bug: v8:11195
      Change-Id: I3cffaa4f122d74705476c3f8791b549f85d8c87b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826534Reviewed-by: 's avatarDan Elphick <delphick@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73993}
      c685df32
    • Leszek Swirski's avatar
      [test] test-js-to-wasm/* is flaky on stress-concurrent-inlining · 729fbf18
      Leszek Swirski authored
      Bug: v8:11650
      Change-Id: Ice830eda80e81faf920c73214f7cd8f4230af6d9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831472
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73989}
      729fbf18
    • Mike Stanton's avatar
      [compiler] Don't migrate boilerplates during TurboFan compile. · d7581365
      Mike Stanton authored
      Instead, bail out of inline literal creation if a deprecated map is
      found. This makes it easier to compile on the background thread.
      
      Bug: v8:7790
      Change-Id: I87941938d4f13dcf49230cf246c33bf2f49897f5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2745134
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73988}
      d7581365
    • Arno Renevier's avatar
      Heap Number encoding · 7f52e4f9
      Arno Renevier authored
      - represent smis as fake heap numbers
      - numbers nodes (both smi and heap numbers) reference a child node whose
        name is "value" and whose entry is the string representation of that
        number
      
      That feature is disabled by default, and can be enabled by passing
      captureNumericValue: true when calling HeapProfiler.takeHeapSnapshot
      
      This patch slightly refactors some functions that operate on "essential
      objects". We now check that the object is essential before trying to
      create the entry. Otherwise, we would end up with smi objects created,
      but not referenced anywhere.
      
      Design doc:
      https://docs.google.com/document/d/1Qh1zxyn0SS5wzJzitD6ecBJTdFbQkJogSMwxDRsn44o/edit
      
      Change-Id: Ibbe6e79a54c4f9eace72bc0a0ccb622a97698e00
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2806747Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Arnaud Renevier <arenevier@fb.com>
      Cr-Commit-Position: refs/heads/master@{#73985}
      7f52e4f9
  5. 15 Apr, 2021 3 commits