1. 19 Apr, 2021 20 commits
  2. 18 Apr, 2021 1 commit
  3. 17 Apr, 2021 2 commits
  4. 16 Apr, 2021 17 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
      [parser] Propagate stack overflow from the reindexer · a1c66099
      Toon Verwaest authored
      Bug: chromium:1178720
      Change-Id: I0431f6d44217019b2370c07d2d11dd086abbcc9f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831874
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74014}
      a1c66099
    • 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
      [arm] Optimize FitsShifter to remove loop · 567f4828
      Leszek Swirski authored
      Operands in Arm can be encoded as (8-bit value, 2*N bit left rotate).
      This encoding is checked for with the FitsShifter function.
      
      Previously, this encoding was exhaustively searched for by checking all
      16 possible rotations. However, we can simply classify the different
      possible rotations as shifting away trailing zeros (without rotation),
      or rotating an 8-bit value split over the beginning and end of the
      32-bit value (which, after one rotation, becomes the first case).
      
      Hence, we can replace the exhaustive search with a couple of trailing
      zeros calculations within these classes.
      
      Change-Id: Id896539c376f695b54bdf31133b2a103b0cf9736
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831479
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarPatrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74012}
      567f4828
    • Yahan Lu's avatar
      [riscv64][wasm] Fix OSR shadow stack violation · 2024f63b
      Yahan Lu authored
      Port 06a2c2e0
      
      Change-Id: I23cbeabc14562168b5060f435beb77778dcfccdc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831171
      Commit-Queue: Brice Dobry <brice.dobry@futurewei.com>
      Reviewed-by: 's avatarBrice Dobry <brice.dobry@futurewei.com>
      Cr-Commit-Position: refs/heads/master@{#74011}
      2024f63b
    • 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
    • Georg Neis's avatar
      [compiler] Fix a bug in VisitSpeculativeIntegerAdditiveOp · 9313c4ce
      Georg Neis authored
      Bug: chromium:1199345
      Change-Id: I33bf71b33f43919fec4684054b5bf0a0787930ca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831478Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74008}
      9313c4ce
    • Santiago Aboy Solanes's avatar
      Reland "[compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently" · 52596006
      Santiago Aboy Solanes authored
      This is a reland of abe4858b
      
      Reason: It was speculatively reverted but it doesn't seem to have been
      the culprit.
      
      TBR=neis@chromium.org
      
      Original change's description:
      > [compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently
      >
      > CanBeDeprecated looks at the DescriptorArray, and CanTransition at the
      > instance_type. Both are safe to read concurrently and we just had to
      > enable them with the macro.
      >
      > Bug: v8:7790
      > Change-Id: Iafe6470f2d64a9ed38383cb9e4d00dd6f23d05d7
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826539
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73995}
      
      Bug: v8:7790
      Change-Id: I51d29d53b208fe9b6b27adc46561a4e1009e8d6f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831488Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74007}
      52596006
    • 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
    • Clemens Backes's avatar
      [liftoff] Add a code comment to landing pads · b079e0b3
      Clemens Backes authored
      This makes it much easier to read the code, since that code otherwise
      looks unreachable.
      
      R=thibaudm@chromium.org
      
      Change-Id: I8720f8e23a6932d83b7ef6a1f26632095ecfeb43
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826120Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74005}
      b079e0b3
    • Manos Koukoutos's avatar
      [wasm][cleanup] Simplifications in decoder/interface code · 53c72cb6
      Manos Koukoutos authored
      Changes:
      - Remove redundant argument from PopControl(), FallThruTo();
      - Rename FallThruTo() -> FallThrough();
      - Do not Kill() the environment at control end in
        graph-builder-interface, as this is not needed.
      - Move some things around and remove dead code.
      
      Change-Id: Ia2e2fb5c3a60c32838d42e5916691b38642b30bc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830792
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74004}
      53c72cb6
    • 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
    • Almothana Athamneh's avatar
      [infra] Create 32 bit clusterfuzz debug builder · c591253b
      Almothana Athamneh authored
      No-Try: true
      Bug: chromium:1196595
      Change-Id: Id6fcb704cad66c5a41232821df30721e49ede2b6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2817613Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarLiviu Rau <liviurau@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74002}
      c591253b
    • Leszek Swirski's avatar
      Revert "[compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently" · c8721656
      Leszek Swirski authored
      This reverts commit abe4858b.
      
      Reason for revert: Speculative revert for TSAN issues (https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/3342/overview)
      
      Original change's description:
      > [compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently
      >
      > CanBeDeprecated looks at the DescriptorArray, and CanTransition at the
      > instance_type. Both are safe to read concurrently and we just had to
      > enable them with the macro.
      >
      > Bug: v8:7790
      > Change-Id: Iafe6470f2d64a9ed38383cb9e4d00dd6f23d05d7
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826539
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73995}
      
      Bug: v8:7790
      Change-Id: I3a068c7d3b04d6b94af74e172960d5756e84103e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831486
      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@{#74001}
      c8721656
    • 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