1. 17 Jan, 2022 1 commit
  2. 07 Sep, 2021 1 commit
  3. 27 Aug, 2021 1 commit
    • Leszek Swirski's avatar
      [sparkplug] Clobber accumulator in StaGlobal · 732f394c
      Leszek Swirski authored
      StaGlobal didn't write the accumulator, but the baseline implementation
      assumed that it could preserve the accumulator by taking the return
      value of the StoreGlobalIC. This almost always worked, except for
      setters on the global object.
      
      Fix this by marking StaGlobal as clobbering the accumulator, same as
      StaNamedProperty (StaNamedProperty needs to do this anyway to avoid
      inlined setters from needing to create accumulator-preserving frames;
      StaGlobal would have needed the same thing if we'd ever inlined setters
      for it).
      
      Also, add a new debug scope, EnsureAccumulatorPreservedScope, to the
      baseline compiler, which checks if the accumulator value is preserved
      across non-accumulator-writing bytecodes. This found a (benign) bug with
      ForInPrepare, so fix that too.
      
      Fixed: chromium:1242306
      Change-Id: I220b5b1c41010c16ac9f944cbd55d2705c299434
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3122325
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76525}
      732f394c
  4. 19 Aug, 2021 1 commit
    • Patrick Thier's avatar
      [masm] Create helpers to manipulate arguments on the stack. · 89933af6
      Patrick Thier authored
      - Introduce helper to push arguments onto the stack (Standalone this
      change doesn't make a lot of sense, but is in preparation for including
      the receiver in argc).
      - Introduce helper to shift arguments already on the stack to make room
      for new arguments (Varargs).
      - arm64 is not included because a) there was already a helper similar
      to ShiftArguments and b) PushArguments is not similar enough to make
      sense for arm64 because of small differences (e.g. also pushing the
      function) in conjunction with stack alignment.
      
      Drive-by: Use masm DropArguments in Sparkplug EmitReturn
      
      Bug: v8:11112
      Change-Id: Id7a3a5f025abb19e2a52dae27b3b484fe87e9faf
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3097275Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Patrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76392}
      89933af6
  5. 04 Aug, 2021 1 commit
  6. 24 Jun, 2021 1 commit
  7. 23 Jun, 2021 1 commit
    • Mihir Shah's avatar
      A jump-table implementation for constant case switch statements · 9711289d
      Mihir Shah authored
      The change is made since for switch statements with lots of cases,
      where each case is a constant integer, the emitted bytecode is still
      a series of jumps, when we can instead use a jump table.
      
      If there are 6 or more cases (similar to GCC) of Smi literals, and
      if the max Smi case minus the min Smi case is not more than 3 times
      the number of cases, we use a jump table up front to handle Smi's,
      and then use traditional if-else logic for the rest of the cases.
      
      We then use the jump table in interpreter/bytecode-jump-table to
      do the optimization.
      
      This tries to go off issue 9738 in v8's issue tracker. It is not
      exactly the same, since that recommends doing the work at JIT-time,
      but has similar ideas. It also partially goes off issue 10764.
      
      Bug: v8:9738
      Change-Id: Ic805682ee3abf9ce464bb733b427fa0c83a6e10c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2904926Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#75323}
      9711289d
  8. 21 Jun, 2021 2 commits
  9. 10 Jun, 2021 1 commit
  10. 08 Jun, 2021 2 commits
  11. 07 Jun, 2021 1 commit
  12. 02 Jun, 2021 1 commit
  13. 11 May, 2021 1 commit
  14. 21 Apr, 2021 1 commit
  15. 16 Apr, 2021 3 commits
    • 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
    • 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
    • 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
  16. 31 Mar, 2021 1 commit
  17. 29 Mar, 2021 1 commit
  18. 25 Mar, 2021 1 commit
    • Patrick Thier's avatar
      Reland "Reland "[sparkplug][deoptimizer] Deoptimize to baseline."" · e438ae2d
      Patrick Thier authored
      This is a reland of e3ccb538
      
      No changes for the reland.
      This CL was speculatively reverted, but was not the cause of the problem.
      
      TBR=jgruber@chromium.org
      
      Original change's description:
      > Reland "[sparkplug][deoptimizer] Deoptimize to baseline."
      >
      > This is a reland of bdcd7d79
      >
      > Handle lazy deopts when the current bytecode is JumpLoop.
      > Instead of advancing to the next bytecode, re-execute the JumpLoop.
      >
      > TBR=jgruber@chromium.org, neis@chromium.org
      >
      > Original change's description:
      > > [sparkplug][deoptimizer] Deoptimize to baseline.
      > >
      > > If we have baseline code, deoptimize to baseline instead of the
      > > interpreter. The process is similar to deopting to the interpreter.
      > > We just use different builtins
      > > (BaselineEnterAtBytecode/BaselineEnterAtNextBytecode) instead of
      > > InterpreterEnterBytecodeDispatch/InterpreterEnterBytecodeAdvance, that
      > > patch an interpreter frame to a baseline frame and continue execution in
      > > baseline code (based on the deopt type, at the current or next
      > > bytecode).
      > >
      > > Bug: v8:11420
      > > Change-Id: Iabaefb36c05155a435c7b380906a86d9b9d549fa
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695591
      > > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#73609}
      >
      > Bug: v8:11420
      > Change-Id: Ib8cac028121188ddc23ff29377760ed684eb7392
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783035
      > Reviewed-by: Patrick Thier <pthier@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73636}
      
      Bug: v8:11420
      Change-Id: I7fbbb73a4fdaeab8b294862ee6ae952928c57994
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784695
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Auto-Submit: Patrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73656}
      e438ae2d
  19. 24 Mar, 2021 4 commits
    • Deepti Gandluri's avatar
      Revert "Reland "[sparkplug][deoptimizer] Deoptimize to baseline."" · ebc9f39f
      Deepti Gandluri authored
      This reverts commit e3ccb538.
      
      Reason for revert: Speculative revert for ARM 64 CFI fails - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20CFI/5174?
      
      Original change's description:
      > Reland "[sparkplug][deoptimizer] Deoptimize to baseline."
      >
      > This is a reland of bdcd7d79
      >
      > Handle lazy deopts when the current bytecode is JumpLoop.
      > Instead of advancing to the next bytecode, re-execute the JumpLoop.
      >
      > TBR=jgruber@chromium.org, neis@chromium.org
      >
      > Original change's description:
      > > [sparkplug][deoptimizer] Deoptimize to baseline.
      > >
      > > If we have baseline code, deoptimize to baseline instead of the
      > > interpreter. The process is similar to deopting to the interpreter.
      > > We just use different builtins
      > > (BaselineEnterAtBytecode/BaselineEnterAtNextBytecode) instead of
      > > InterpreterEnterBytecodeDispatch/InterpreterEnterBytecodeAdvance, that
      > > patch an interpreter frame to a baseline frame and continue execution in
      > > baseline code (based on the deopt type, at the current or next
      > > bytecode).
      > >
      > > Bug: v8:11420
      > > Change-Id: Iabaefb36c05155a435c7b380906a86d9b9d549fa
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695591
      > > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#73609}
      >
      > Bug: v8:11420
      > Change-Id: Ib8cac028121188ddc23ff29377760ed684eb7392
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783035
      > Reviewed-by: Patrick Thier <pthier@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73636}
      
      Bug: v8:11420
      Change-Id: Icd797b4979a114a2a627e12c8bb7d2215df03182
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2785074Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73643}
      ebc9f39f
    • Patrick Thier's avatar
      Reland "[sparkplug][deoptimizer] Deoptimize to baseline." · e3ccb538
      Patrick Thier authored
      This is a reland of bdcd7d79
      
      Handle lazy deopts when the current bytecode is JumpLoop.
      Instead of advancing to the next bytecode, re-execute the JumpLoop.
      
      TBR=jgruber@chromium.org, neis@chromium.org
      
      Original change's description:
      > [sparkplug][deoptimizer] Deoptimize to baseline.
      >
      > If we have baseline code, deoptimize to baseline instead of the
      > interpreter. The process is similar to deopting to the interpreter.
      > We just use different builtins
      > (BaselineEnterAtBytecode/BaselineEnterAtNextBytecode) instead of
      > InterpreterEnterBytecodeDispatch/InterpreterEnterBytecodeAdvance, that
      > patch an interpreter frame to a baseline frame and continue execution in
      > baseline code (based on the deopt type, at the current or next
      > bytecode).
      >
      > Bug: v8:11420
      > Change-Id: Iabaefb36c05155a435c7b380906a86d9b9d549fa
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695591
      > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73609}
      
      Bug: v8:11420
      Change-Id: Ib8cac028121188ddc23ff29377760ed684eb7392
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783035Reviewed-by: 's avatarPatrick Thier <pthier@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Patrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73636}
      e3ccb538
    • Igor Sheludko's avatar
      [sparkplug] Allow short builtin calls only on machines with >= 4GB · c1500711
      Igor Sheludko authored
      ... of physical memory, since builtins re-embedding comes with a memory
      overhead.
      
      Bug: v8:11527
      Change-Id: I24b77c3ab63e1891bd4c6134c3f3456921cc2a01
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784564Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73632}
      c1500711
    • Sathya Gunasekaran's avatar
      Revert "[sparkplug][deoptimizer] Deoptimize to baseline." · 6fc861e4
      Sathya Gunasekaran authored
      This reverts commit bdcd7d79.
      
      Reason for revert: 
      https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Blink%20Linux%20Future/7996/blamelist
      
      Original change's description:
      > [sparkplug][deoptimizer] Deoptimize to baseline.
      >
      > If we have baseline code, deoptimize to baseline instead of the
      > interpreter. The process is similar to deopting to the interpreter.
      > We just use different builtins
      > (BaselineEnterAtBytecode/BaselineEnterAtNextBytecode) instead of
      > InterpreterEnterBytecodeDispatch/InterpreterEnterBytecodeAdvance, that
      > patch an interpreter frame to a baseline frame and continue execution in
      > baseline code (based on the deopt type, at the current or next
      > bytecode).
      >
      > Bug: v8:11420
      > Change-Id: Iabaefb36c05155a435c7b380906a86d9b9d549fa
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695591
      > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73609}
      
      Bug: v8:11420
      Change-Id: Ie8b936df343b9194c0a6e50e0c44b67c0d9a012d
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783030
      Auto-Submit: Sathya Gunasekaran  <gsathya@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@{#73621}
      6fc861e4
  20. 23 Mar, 2021 2 commits
    • Patrick Thier's avatar
      [sparkplug][deoptimizer] Deoptimize to baseline. · bdcd7d79
      Patrick Thier authored
      If we have baseline code, deoptimize to baseline instead of the
      interpreter. The process is similar to deopting to the interpreter.
      We just use different builtins
      (BaselineEnterAtBytecode/BaselineEnterAtNextBytecode) instead of
      InterpreterEnterBytecodeDispatch/InterpreterEnterBytecodeAdvance, that
      patch an interpreter frame to a baseline frame and continue execution in
      baseline code (based on the deopt type, at the current or next
      bytecode).
      
      Bug: v8:11420
      Change-Id: Iabaefb36c05155a435c7b380906a86d9b9d549fa
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695591
      Commit-Queue: Patrick Thier <pthier@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73609}
      bdcd7d79
    • Leszek Swirski's avatar
      [sparkplug] Include calls in stack guard · be3c0126
      Leszek Swirski authored
      Calculate the maximum call size in the bytecode pre-visit, and pass that
      (along with the bytecode's frame size) to the prologue to be included in
      the stack check. This avoids doing a stack check before each call, and
      mirrors a similar optimisation in TurboFan.
      
      Also, use StackGuardWithGap instead of StackGuard, to make sure that
      stack overflows in the prologue actually trigger stack overflows in the
      runtime.
      
      Bug: v8:11420
      Fixed: chromium:1189890
      Change-Id: I795c197c20f85611318ab09c7bca78ce40b64924
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2778278
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73600}
      be3c0126
  21. 17 Mar, 2021 2 commits
  22. 24 Feb, 2021 1 commit
    • Leszek Swirski's avatar
      [sparkplug] Fix instance type checks · e708bf69
      Leszek Swirski authored
      We were using CmpInstanceType instead of CmpObjectType in some places,
      which meant that we were reading the value at the instance type field
      offset within objects directly, rather than first loading their map and
      reading the instance type there.
      
      Bug: chromium:1180434
      Change-Id: I4771b4f8f9a32bdc35944c6e6cd30c54e4ac8b6c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2716292
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73003}
      e708bf69
  23. 23 Feb, 2021 1 commit
  24. 22 Feb, 2021 2 commits
  25. 19 Feb, 2021 2 commits
  26. 17 Feb, 2021 1 commit
  27. 15 Feb, 2021 3 commits