1. 20 Jun, 2022 3 commits
  2. 31 Mar, 2022 1 commit
  3. 14 Mar, 2022 1 commit
  4. 06 Dec, 2021 1 commit
  5. 24 Nov, 2021 1 commit
  6. 22 Nov, 2021 2 commits
  7. 15 Nov, 2021 1 commit
    • Manos Koukoutos's avatar
      [wasm][turbofan] Store real signature on call nodes for inlining · b927dc15
      Manos Koukoutos authored
      In each wasm CallDescriptor, we store the signature of the call based on
      the real parameters passed to the call. This signature is more precise
      than the formal function signature. We use this signature in inlining
      to enable more optimizations.
      
      Changes:
      - Add wasm_sig_ field to CallDescriptor.
      - Construct the real signature in {DoCall} and {DoReturnCall} in
        graph-builder-interface, and pass it to all call-related functions in
        WasmGraphBuilder.
      - Update {ReplaceTypeInCallDescriptorWith} to use ValueType over
        MachineType. Construct the updated function signature.
      - In wasm-inlining, kill the Call node after inlining.
      - Add two tests.
      
      Bug: v8:11510
      Change-Id: Ica711b6b4d83945ecb7201be26577eab7db3c060
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3270539Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77889}
      b927dc15
  8. 09 Nov, 2021 1 commit
  9. 05 Nov, 2021 1 commit
  10. 01 Oct, 2021 1 commit
  11. 02 Sep, 2021 1 commit
  12. 01 Jul, 2021 1 commit
  13. 17 Jun, 2021 1 commit
  14. 16 Jun, 2021 1 commit
  15. 10 Jun, 2021 1 commit
  16. 01 Jun, 2021 1 commit
    • Camillo Bruni's avatar
      Reland "[builtins][x64] Use callee-saved registers for write barrier stubs" · 8ff87ecc
      Camillo Bruni authored
      This is a reland of 17915002 with an
      added fix for TurboAssembler::CallTSANRelaxedStoreStub.
      
      Original change's description:
      > [builtins][x64] Use callee-saved registers for write barrier stubs
      >
      > Calls to the record write stub are quite frequent and the caller has to
      > save all registers used by the builtin.
      >
      > This CL moves the register saving to the builtin itself, reducing the
      > call-site code size significantly in many cases and thus improving
      > compilation speed of sparkplug.
      >
      > Follow-up CLs with introduce the same behaviour to other platforms.
      >
      > - CallRecordWriteStubSaveRegisters preserves the existing behaviour and
      >   saves clobbered registers.
      > - CallRecordWriteStub expects the registers to match the ones specified
      >   in the WriteBarrierDescriptor for more compact code.
      >
      > Bug: v8:11420
      > Change-Id: Ib1260cf972712bb9ba879beacd34b06a7fa347f1
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922103
      > Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#74831}
      
      Bug: v8:11420
      Change-Id: Ibac3e6f0360d35579ee0b0dc5d698f8cdab93260
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922604Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74870}
      8ff87ecc
  17. 27 May, 2021 2 commits
    • Adam Klein's avatar
      Revert "[builtins][x64] Use callee-saved registers for write barrier stubs" · d23d68fe
      Adam Klein authored
      This reverts commit 17915002.
      
      Reason for revert: Breaks TSAN builds (e.g. https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20builder/19166/overview)
      
      Original change's description:
      > [builtins][x64] Use callee-saved registers for write barrier stubs
      >
      > Calls to the record write stub are quite frequent and the caller has to
      > save all registers used by the builtin.
      >
      > This CL moves the register saving to the builtin itself, reducing the
      > call-site code size significantly in many cases and thus improving
      > compilation speed of sparkplug.
      >
      > Follow-up CLs with introduce the same behaviour to other platforms.
      >
      > - CallRecordWriteStubSaveRegisters preserves the existing behaviour and
      >   saves clobbered registers.
      > - CallRecordWriteStub expects the registers to match the ones specified
      >   in the WriteBarrierDescriptor for more compact code.
      >
      > Bug: v8:11420
      > Change-Id: Ib1260cf972712bb9ba879beacd34b06a7fa347f1
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922103
      > Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#74831}
      
      Bug: v8:11420
      Change-Id: I20f239e64ec2834acd651341634974291992add5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922316
      Auto-Submit: Adam Klein <adamk@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@{#74832}
      d23d68fe
    • Camillo Bruni's avatar
      [builtins][x64] Use callee-saved registers for write barrier stubs · 17915002
      Camillo Bruni authored
      Calls to the record write stub are quite frequent and the caller has to
      save all registers used by the builtin.
      
      This CL moves the register saving to the builtin itself, reducing the
      call-site code size significantly in many cases and thus improving
      compilation speed of sparkplug.
      
      Follow-up CLs with introduce the same behaviour to other platforms.
      
      - CallRecordWriteStubSaveRegisters preserves the existing behaviour and
        saves clobbered registers.
      - CallRecordWriteStub expects the registers to match the ones specified
        in the WriteBarrierDescriptor for more compact code.
      
      Bug: v8:11420
      Change-Id: Ib1260cf972712bb9ba879beacd34b06a7fa347f1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922103Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74831}
      17915002
  18. 11 Mar, 2021 3 commits
    • Clemens Backes's avatar
      Reland "[no-wasm] Exclude src/wasm from compilation" · 3f9ff062
      Clemens Backes authored
      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}
      
      TBR=jgruber@chromium.org
      
      Bug: v8:11238
      Change-Id: I20bd2847a59c68738b5a336cd42582b7b1499585
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      Cq-Include-Trybots: luci.v8.try:v8_linux_verify_csa_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux64_verify_csa_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752867Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73348}
      3f9ff062
    • Clemens Backes's avatar
      Revert "[no-wasm] Exclude src/wasm from compilation" · 92bc3d38
      Clemens Backes authored
      This reverts commit 80f5dfda.
      
      Reason for revert: Fails CSA verification: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20verify%20csa/21766/overview
      
      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}
      
      Bug: v8:11238
      Change-Id: I93672002c1faa36bb0bb5b4a9cc2032ee2ccd814
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752866
      Auto-Submit: Clemens Backes <clemensb@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@{#73346}
      92bc3d38
    • Clemens Backes's avatar
      [no-wasm] Exclude src/wasm from compilation · 80f5dfda
      Clemens Backes authored
      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: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73344}
      80f5dfda
  19. 06 Mar, 2021 1 commit
    • Bill Budge's avatar
      [compiler] Refactor CallDescriptor methods · 37f9742b
      Bill Budge authored
      - Renames StackParameterCount to ParameterSlotCount, to avoid
        confusion between slots and parameters, which are not in general
        equivalent.
      - Similarly, renames StackReturnCount to ReturnSlotCount.
      - Adjusts the result of GetFirstUnusedStackSlot to return one more
        than the last slot of the argument area, not including padding.
      - Renames GetFirstUnusedStackSlot to GetOffsetToFirstUnusedStackSlot
        to reflect that the result is an offset from callee to caller
        frames.
      - GetReturnsOffset is a little clearer, with adjustment for the
        different semantics of GetFirstUnusedStackSlot.
      - Renames 'optional_padding_slot' and 'first_unused_stack_slot'
        variables in Tailcall codegen to reflect that these are offsets.
      
      Bug: v8:9198
      
      Change-Id: Ib73c52710dc1f3ead640d488a6fdeb605b7b665e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2700099
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73242}
      37f9742b
  20. 05 Mar, 2021 1 commit
    • Bill Budge's avatar
      Reland "[codegen][frames] Generalize argument padding slot code" · d2ab64eb
      Bill Budge authored
      This is a (manual) reland of ba87518e071a75fb951b490d3f75a87ca715cc23
      
      It is unchanged, except to rebase around a merge conflict.
      TBR=neis@chromium.org, jgruber@chromium.org
      
      Bug: v8:9198
      
      > [codegen][frames] Generalize argument padding slot code
      >
      > - Removes kPadArguments boolean.
      > - Changes ShouldPadArguments to ArgumentPaddingSlots to reflect
      >   that on some architectures more than 1 padding slot may be needed.
      > - Adds AddArgumentPaddingSlots and ShouldPadArguments convenience
      >   functions.
      >
      > Bug: v8:9198
      >
      > Change-Id: Iba87518e071a75fb951b490d3f75a87ca715cc23
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2679109
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72605}
      
      Change-Id: I2a9022964d3bafe68c5c1e7de0ae7e837dd5c2e3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2740457Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73241}
      d2ab64eb
  21. 04 Mar, 2021 1 commit
  22. 22 Feb, 2021 1 commit
    • Bill Budge's avatar
      Revert "[codegen][frames] Generalize argument padding slot code" · 396c2635
      Bill Budge authored
      This reverts commit 8cf4eec7.
      
      Reason for revert: Rolling back to previous greedy slot allocator.
      
      tbr=neis@chromium.org,jgruber@chromium.org
      
      Original change's description:
      > [codegen][frames] Generalize argument padding slot code
      >
      > - Removes kPadArguments boolean.
      > - Changes ShouldPadArguments to ArgumentPaddingSlots to reflect
      >   that on some architectures more than 1 padding slot may be needed.
      > - Adds AddArgumentPaddingSlots and ShouldPadArguments convenience
      >   functions.
      >
      > Bug: v8:9198
      >
      > Change-Id: Iba87518e071a75fb951b490d3f75a87ca715cc23
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2679109
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72605}
      
      Bug: v8:9198
      Change-Id: Ie93d32d4b93c67840e4792acb017f28a826bd030
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713205
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72931}
      396c2635
  23. 09 Feb, 2021 1 commit
  24. 15 Jan, 2021 1 commit
  25. 13 Jan, 2021 2 commits
  26. 01 Dec, 2020 1 commit
  27. 14 Oct, 2020 1 commit
  28. 10 Sep, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Implement tier-up (part 3, spawn task & install) · 608018e5
      Jakob Gruber authored
      This is the final part of the tier-up commit series. It implements:
      
      - A prologue in NCI code objects that checks and acts upon the
      optimization marker.
      - Currently, handling is deferred to the InterpreterEntryTrampoline
      but this will change in the future.
      - The lifecycle is otherwise like Ignition-to-Turbofan; the runtime
      profiler marks a function for optimization, the next call to that
      function triggers optimization by calling into runtime, and the
      finished code object is installed both on the JSFunction and the
      optimized code cache.
      - The feedback vector's kOptimizedCodeWeakOrSmiOffset slot is
      currently reused for the mid-to-top tier up.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:8888
      Change-Id: Iff50b05ddcc68b25d7ed0f1e0d20af076a1522a0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2361466Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69808}
      608018e5
  29. 02 Sep, 2020 2 commits
  30. 05 Aug, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Replace CompilationTarget with a new Code::Kind value · c51041f4
      Jakob Gruber authored
      With the new Turbofan variants (NCI and Turboprop), we need a way to
      distinguish between them both during and after compilation. We
      initially introduced CompilationTarget to track the variant during
      compilation, but decided to reuse the code kind as the canonical spot to
      store this information instead.
      
      Why? Because it is an established mechanism, already available in most
      of the necessary spots (inside the pipeline, on Code objects, in
      profiling traces).
      
      This CL removes CompilationTarget and adds a new
      NATIVE_CONTEXT_INDEPENDENT kind, plus helper functions to determine
      various things about a given code kind (e.g.: does this code kind
      deopt?).
      
      As a (very large) drive-by, refactor both Code::Kind and
      AbstractCode::Kind into a new CodeKind enum class.
      
      Bug: v8:8888
      Change-Id: Ie858b9a53311b0731630be35cf5cd108dee95b39
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336793
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69244}
      c51041f4
  31. 20 Jul, 2020 1 commit
  32. 10 Jul, 2020 1 commit