1. 14 Jun, 2021 1 commit
  2. 11 Jun, 2021 1 commit
  3. 07 Jun, 2021 1 commit
  4. 01 Jun, 2021 1 commit
  5. 12 May, 2021 1 commit
  6. 11 May, 2021 2 commits
  7. 10 May, 2021 1 commit
  8. 06 May, 2021 1 commit
  9. 21 Apr, 2021 1 commit
  10. 19 Apr, 2021 2 commits
    • Milad Fa's avatar
      PPC/s390: Reland "[codegen] Add static interface descriptors" · ea177a6b
      Milad Fa authored
      Port 2871e05c
      
      Original Commit Message:
      
          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}
      
      R=leszeks@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: Id854bb901df72787ed225fc8790c3f626121ab3a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830897Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#74034}
      ea177a6b
    • Patrick Thier's avatar
      [interpreter][cleanup] Rename interpreter entry trampolines · d90be52e
      Patrick Thier authored
      Rename
       - InterpreterEnterBytecodeDispatch to InterpreterEnterAtBytecode
       - InterpreterEnterBytecodeAdvance to InterpreterEnterAtNextBytecode.
      
      The reason for renaming is consistency with baseline trampolines that
      have similar functionality, but the old names didn't fit for baseline
      very well.
      
      Change-Id: I35897972fdd71f3bb0db74820db2b9034144a3c8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830794Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Patrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74027}
      d90be52e
  11. 15 Apr, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: [wasm][x64] Fix OSR shadow stack violation · 80aaae9e
      Milad Fa authored
      Port 06a2c2e0
      
      Original Commit Message:
      
          We currently allow OSR (On-Stack Replacement) of arbitrarily deep return
          addresses. This is in direct violation of Intel CET's shadow stack,
          which we plan to enable eventually.
      
          This change works around this by postponing OSR until after we return to
          the old code. The main changes are:
          - Reserve a slot in Liftoff frames to store the OSR target,
          - Skip the return address modification, and instead store the new code
          pointer in the dedicated slot,
          - Upon returning to the old code, check the slot and do an indirect jump
          to the new code if needed.
      
          CET also prevents indirect jumps to arbitrary locations, so the last
          point is also a CET violation. Valid indirect jump targets must be
          marked with the ENDBRANCH instruction, which I will do in a follow-up
          CL.
      
      R=thibaudm@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: Id972de1ba7556474cb00b377ea3a38eb4332eae3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2828870Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73984}
      80aaae9e
  12. 14 Apr, 2021 1 commit
  13. 06 Apr, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: Reland "[sparkplug] OSR Ignition -> Sparkplug" · 1b9d14a8
      Milad Fa authored
      Port 064ca18c
      
      Original Commit Message:
      
          This is a reland of b9c521d0.
      
          Fixes crashes by calling kInstallBaselineCode from BaselineEntry if
          needed, i.e. when there is no feedback vector (required a bit of
          register rejiggling).
          This can happen with cross-realm calls. The OSR arming is stored as
          part of the BytecodeArray and therefore shared across realms.
      
          Original change's description:
          > [sparkplug] OSR Ignition -> Sparkplug
          >
          > Add support for OSR to baseline code.
          > We compile baseline and perform OSR immediately when the bytecode budget
          > interrupt hits.
          >
          > Drive-by: Clean-up deoptimizer special handling of JumpLoop by using
          > the newly introduced GetBaselinePCForNextExecutedBytecode instead of
          > GetBaselineEndPCForBytecodeOffset.
          >
          > Bug: v8:11420
          > Change-Id: Ifbea264d4a83a127dd2a11e28626bf2a5e8aca59
          > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784687
          > Commit-Queue: Patrick Thier <pthier@chromium.org>
          > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
          > Cr-Commit-Position: refs/heads/master@{#73677}
      
      R=pthier@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I724e8f7a3a2064daae282d892c0e0d6dbd8b691a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2807854Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73807}
      1b9d14a8
  14. 25 Mar, 2021 1 commit
    • Milad Fa's avatar
      Reland "PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline." · 20a44ed4
      Milad Fa authored
      This reverts commit d8c6b2ec.
      
      Reason for revert: original cl has relanded
      
      Original change's description:
      > Revert "PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline."
      >
      > This reverts commit 94272ea5.
      >
      > Reason for revert: original port was reverted
      >
      > Original change's description:
      > > PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline.
      > >
      > > Port bdcd7d79
      > >
      > > Original Commit Message:
      > >
      > >     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).
      > >
      > > R=​pthier@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      > > BUG=
      > > LOG=N
      > >
      > > Change-Id: I3230f3f3c6506230b2751a3389f10b022dec61a3
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783022
      > > Reviewed-by: Junliang Yan <junyan@redhat.com>
      > > Commit-Queue: Milad Fa <mfarazma@redhat.com>
      > > Cr-Commit-Position: refs/heads/master@{#73618}
      >
      > Change-Id: I903ad90099c4dc5f153d28aea9246933ac69972b
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784002
      > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      > Commit-Queue: Milad Fa <mfarazma@redhat.com>
      > Cr-Commit-Position: refs/heads/master@{#73630}
      
      Change-Id: I7746f42472ae63e49770f491ae6b8ef7b596cfce
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2785380
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73661}
      20a44ed4
  15. 24 Mar, 2021 1 commit
    • Milad Fa's avatar
      Revert "PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline." · d8c6b2ec
      Milad Fa authored
      This reverts commit 94272ea5.
      
      Reason for revert: original port was reverted
      
      Original change's description:
      > PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline.
      >
      > Port bdcd7d79
      >
      > Original Commit Message:
      >
      >     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).
      >
      > R=​pthier@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      > BUG=
      > LOG=N
      >
      > Change-Id: I3230f3f3c6506230b2751a3389f10b022dec61a3
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783022
      > Reviewed-by: Junliang Yan <junyan@redhat.com>
      > Commit-Queue: Milad Fa <mfarazma@redhat.com>
      > Cr-Commit-Position: refs/heads/master@{#73618}
      
      Change-Id: I903ad90099c4dc5f153d28aea9246933ac69972b
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784002
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73630}
      d8c6b2ec
  16. 23 Mar, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: [sparkplug][deoptimizer] Deoptimize to baseline. · 94272ea5
      Milad Fa authored
      Port bdcd7d79
      
      Original Commit Message:
      
          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).
      
      R=pthier@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I3230f3f3c6506230b2751a3389f10b022dec61a3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783022Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73618}
      94272ea5
  17. 11 Mar, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: Reland "[no-wasm] Exclude src/wasm from compilation" · 8224bdf4
      Milad Fa authored
      Port 3f9ff062
      
      Original Commit Message:
      
          This is a reland of 80f5dfda. A condition
          in pipeline.cc was inverted, which lead to a CSA verifier error.
      
          Original change's description:
          > [no-wasm] Exclude src/wasm from compilation
          >
          > This is the biggest chunk, including
          > - all of src/wasm,
          > - torque file for wasm objects,
          > - torque file for wasm builtins,
          > - wasm builtins,
          > - wasm runtime functions,
          > - int64 lowering,
          > - simd scala lowering,
          > - WasmGraphBuilder (TF graph construction for wasm),
          > - wasm frame types,
          > - wasm interrupts,
          > - the JSWasmCall opcode,
          > - wasm backing store allocation.
          >
          > Those components are all recursively entangled, so I found no way to
          > split this change up further.
          >
          > Some includes that were recursively included by wasm headers needed to
          > be added explicitly now.
          >
          > backing-store-unittest.cc is renamed to wasm-backing-store-unittest.cc
          > because it only tests wasm backing stores. This file is excluded from
          > no-wasm builds then.
          >
          > R=jkummerow@chromium.org, jgruber@chromium.org, mlippautz@chromium.org, petermarshall@chromium.org
          >
          > Bug: v8:11238
          > Change-Id: I7558f2d12d2dd6c65128c4de7b79173668c80b2b
          > Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
          > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742955
          > Commit-Queue: Clemens Backes <clemensb@chromium.org>
          > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
          > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
          > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
          > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
          > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
          > Cr-Commit-Position: refs/heads/master@{#73344}
      
      R=clemensb@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I006f32407aea051c960f32942f9353f415547116
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2753143Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73357}
      8224bdf4
  18. 25 Feb, 2021 1 commit
  19. 23 Feb, 2021 1 commit
  20. 16 Feb, 2021 1 commit
  21. 09 Feb, 2021 1 commit
  22. 02 Feb, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: Fix frame size to account for q registers · f8360140
      Milad Fa authored
      Port 45b99aaa
      
      Original Commit Message:
      
          In https://crrev.com/c/2645694 we push the full q registers before lazy
          compile, but we did not change the fixed frame size to account for the
          wider registers being pushed.
      
          This manifested in the frame having data like:
      
          (gdb) x/10xg start.ptr_
          0x7f5576ff3eb0: 0x0000000000000000      0x0000336b08202759
          0x7f5576ff3ec0: 0x7ff000007f801000      0x0000000000000000
          0x7f5576ff3ed0: 0x7ff000007f801001      0x0000000000000000
          0x7f5576ff3ee0: 0x7ff000007f801002      0x0000000000000000
          0x7f5576ff3ef0: 0x7ff000007f801003      0x0000000000000000
      
          The GC then walks part of this frame, thinking that 0x7ff000007f801003
          is a heap object, and then crashes.
      
          Add some static_asserts (similar to builtins-x64) to remind ourselves
          that the pushed registers have to match the size in frame constants.
      
      R=zhin@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I994f1b7fecbb24ea97d846b1eed98201bc3b08ad
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2669308Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#72496}
      f8360140
  23. 01 Feb, 2021 2 commits
  24. 28 Jan, 2021 1 commit
  25. 27 Jan, 2021 1 commit
  26. 22 Jan, 2021 1 commit
  27. 19 Jan, 2021 1 commit
  28. 18 Jan, 2021 1 commit
  29. 21 Dec, 2020 2 commits
  30. 18 Dec, 2020 1 commit
  31. 16 Dec, 2020 1 commit
    • Milad Fa's avatar
      PPC/s390: Reland "[Turboprop] Move dynamic check maps immediate args to deopt exit." · 07f0b7a4
      Milad Fa authored
      Port 7bdb0fbb
      
      Original Commit Message:
      
          This is a reland of b2a611d8
      
          Original change's description:
          > [Turboprop] Move dynamic check maps immediate args to deopt exit.
          >
          > Rather than loading the immediate arguments required by the
          > dynamic check maps builtin into registers in the fast-path,
          > instead insert them into the instruction stream in the deopt
          > exit and have the builtin load them into registers itself.
          >
          > BUG=v8:10582
          >
          > Change-Id: I66716570b408501374eed8f5e6432df64c6deb7c
          > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2589736
          > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
          > Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
          > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
          > Cr-Commit-Position: refs/heads/master@{#71790}
      
      R=rmcilroy@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I83fc0f3e3ebcf19ca4303e50aae94d7b353cd0ac
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595708Reviewed-by: 's avatarJoran Siu <joransiu@ca.ibm.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71809}
      07f0b7a4
  32. 14 Dec, 2020 1 commit
  33. 11 Dec, 2020 3 commits
  34. 10 Dec, 2020 1 commit