1. 19 Apr, 2021 14 commits
  2. 18 Apr, 2021 1 commit
  3. 17 Apr, 2021 2 commits
  4. 16 Apr, 2021 23 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
    • 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
    • Wenyu Zhao's avatar
      [heap] Fix binary size regression · 76d83daa
      Wenyu Zhao authored
      This fixes the binary size regression introduced by https://chromium-review.googlesource.com/c/v8/v8/+/2247561
      
      Bug: v8:11643
      Change-Id: Ic615b1820620dc7bfadce3075ce04b4d6d1f4b64
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831160
      Commit-Queue: Wenyu Zhao <wenyu.zhao@anu.edu.au>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73998}
      76d83daa
    • 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
    • Santiago Aboy Solanes's avatar
      [compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently · abe4858b
      Santiago Aboy Solanes authored
      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/+/2826539Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73995}
      abe4858b
    • 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