1. 06 Oct, 2020 1 commit
  2. 02 Oct, 2020 1 commit
  3. 29 Sep, 2020 1 commit
  4. 28 Sep, 2020 1 commit
  5. 10 Sep, 2020 2 commits
    • 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
    • Sathya Gunasekaran's avatar
      [turboprop] Unroll loop in the dynamic map checks operator · 9c67790b
      Sathya Gunasekaran authored
      The dynamic map checks operator loads the feedback vector and performs
      map checks against each map and handler entry in the feedback against
      the incoming map and handler.
      
      Instead of emitting code to iterate over this feedback vector at
      runtime, we unroll this loop at compile time.
      
      The generated code is similar to this pseudocode:
      
        length = feedback_slot.length
        if length >= 4: goto labels[3]
        if length == 3: goto labels[2]
        if length == 2: goto labels[1]
        if length == 1: goto labels[0]
      
        labels[3]:
          map = load(feedback_slot, 6)
          if incoming_map == map goto handler_check(7)
          goto labels[2]
        labels[2]:
          map = load(feedback_slot, 4)
          if incoming_map == map goto handler_check(5)
          goto labels[1]
        labels[1]:
          map = load(feedback_slot, 2)
          if incoming_map == map goto handler_check(3)
          goto labels[0]
        labels[0]:
          map = load(feedback_slot, 0)
          if incoming_map == map goto handler_check(1)
          bailout
      
        handler_check (index):
          handler = load(feedback_slot, index)
          if incoming_handler ==  handler goto done
          deoptimize
      
      Bug: v8:10582, v8:9684
      Change-Id: I64d64ff8eda664e4d476bf1b2612e26a344e98a6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339960
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69797}
      9c67790b
  6. 24 Aug, 2020 1 commit
    • Jakob Gruber's avatar
      Improve usability of GraphAssembler's Unreachable() · e02e5107
      Jakob Gruber authored
      Prior to this CL, one had to artificially insert a
      basic-block-terminating node after Unreachable. The common pattern was
      
       Unreachable();
       Goto(&some_label);  // Never reached but generates useless code.
      
      This CL improves usability by automatically merging Unreachable nodes
      to the end node, and terminating current effect/control. The updated
      pattern is just
      
       Unreachable();
      
      or in cases where Turboprop must maintain a schedule:
      
       Unreachable(&some_label);
      
      Bug: v8:8888
      Change-Id: I26a0b11b5e67252a6dc3584ae09ed06370f1eacc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362690
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69531}
      e02e5107
  7. 11 Aug, 2020 1 commit
  8. 22 Jul, 2020 1 commit
  9. 20 Jul, 2020 1 commit
  10. 15 Jul, 2020 1 commit
  11. 30 Jun, 2020 1 commit
  12. 25 Jun, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Add feedback input to more nodes kinds · 5d417c0d
      Jakob Gruber authored
      ... and extend JS node wrapper functionality.
      
      Node wrappers now have accessors for value inputs and
      context/control/effect/frame-state inputs. Accessors are typed,
      although types aren't very meaningful so far (in current examples we
      only distinguish between Object/HeapObject).
      
      The following node kinds now take an additional feedback vector input,
      and use the new node wrapper functionality above:
      
      - CloneObject
      - CreateLiteralArray
      - CreateLiteralObject
      - CreateLiteralRegExp
      - GetIterator
      - GetTemplateObject
      - HasProperty
      - LoadProperty
      - StoreProperty
      
      Bug: v8:8888
      Change-Id: I1eb33c078b11725a72ec983bbaa848b9a3c7b0d9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2259936
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68538}
      5d417c0d
  13. 22 Jun, 2020 1 commit
  14. 08 Jun, 2020 1 commit
  15. 15 May, 2020 1 commit
  16. 07 May, 2020 1 commit
  17. 29 Apr, 2020 2 commits
  18. 28 Apr, 2020 2 commits
    • Clemens Backes's avatar
      Revert "Reland "[turbofan][csa] optimize Smi untagging better"" · bef5b85d
      Clemens Backes authored
      This reverts commit 43b885a8.
      
      Reason for revert: Still fails on UBSan: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/10873
      
      Original change's description:
      > Reland "[turbofan][csa] optimize Smi untagging better"
      > 
      > This is a reland of ff22ae80
      > 
      > Original change's description:
      > > [turbofan][csa] optimize Smi untagging better
      > > 
      > > - Introduce new operator variants for signed right-shifts with the
      > >   additional information that they always shift out zeros.
      > > - Use these new operators for Smi untagging.
      > > - Merge left-shifts with a preceding Smi-untagging shift.
      > > - Optimize comparisons of Smi-untagging shifts to operate on the
      > >   unshifted word.
      > > - Optimize 64bit comparisons of values expanded from 32bit to use
      > >   a 32bit comparison instead.
      > > - Change CodeStubAssembler::UntagSmi to first sign-extend and then
      > >   right-shift to enable better address computations for Smi indices.
      > > 
      > > Bug: v8:9962
      > > Change-Id: If91300f365e8f01457aebf0bd43bdf88b305c460
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135734
      > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#67378}
      > 
      > Bug: v8:9962
      > Change-Id: Ieab0755806c95fb50022eb17596fb0c95f36004c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170001
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67430}
      
      TBR=neis@chromium.org,tebbi@chromium.org
      
      Change-Id: I49e19811ebcecb846f61291bc0c4a0d8b0bc4cff
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9962
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2168876Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67431}
      bef5b85d
    • Tobias Tebbi's avatar
      Reland "[turbofan][csa] optimize Smi untagging better" · 43b885a8
      Tobias Tebbi authored
      This is a reland of ff22ae80
      
      Original change's description:
      > [turbofan][csa] optimize Smi untagging better
      > 
      > - Introduce new operator variants for signed right-shifts with the
      >   additional information that they always shift out zeros.
      > - Use these new operators for Smi untagging.
      > - Merge left-shifts with a preceding Smi-untagging shift.
      > - Optimize comparisons of Smi-untagging shifts to operate on the
      >   unshifted word.
      > - Optimize 64bit comparisons of values expanded from 32bit to use
      >   a 32bit comparison instead.
      > - Change CodeStubAssembler::UntagSmi to first sign-extend and then
      >   right-shift to enable better address computations for Smi indices.
      > 
      > Bug: v8:9962
      > Change-Id: If91300f365e8f01457aebf0bd43bdf88b305c460
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135734
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67378}
      
      Bug: v8:9962
      Change-Id: Ieab0755806c95fb50022eb17596fb0c95f36004c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170001
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67430}
      43b885a8
  19. 24 Apr, 2020 2 commits
    • Bill Budge's avatar
      Revert "[turbofan][csa] optimize Smi untagging better" · cdea7999
      Bill Budge authored
      This reverts commit ff22ae80.
      
      Reason for revert: new test fails on UBSAN
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/10831
      
      Original change's description:
      > [turbofan][csa] optimize Smi untagging better
      > 
      > - Introduce new operator variants for signed right-shifts with the
      >   additional information that they always shift out zeros.
      > - Use these new operators for Smi untagging.
      > - Merge left-shifts with a preceding Smi-untagging shift.
      > - Optimize comparisons of Smi-untagging shifts to operate on the
      >   unshifted word.
      > - Optimize 64bit comparisons of values expanded from 32bit to use
      >   a 32bit comparison instead.
      > - Change CodeStubAssembler::UntagSmi to first sign-extend and then
      >   right-shift to enable better address computations for Smi indices.
      > 
      > Bug: v8:9962
      > Change-Id: If91300f365e8f01457aebf0bd43bdf88b305c460
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135734
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67378}
      
      TBR=neis@chromium.org,tebbi@chromium.org
      
      Change-Id: I2617d7a44e5ae33fd79322d37c8b722c00162d22
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9962
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2165873Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67380}
      cdea7999
    • Tobias Tebbi's avatar
      [turbofan][csa] optimize Smi untagging better · ff22ae80
      Tobias Tebbi authored
      - Introduce new operator variants for signed right-shifts with the
        additional information that they always shift out zeros.
      - Use these new operators for Smi untagging.
      - Merge left-shifts with a preceding Smi-untagging shift.
      - Optimize comparisons of Smi-untagging shifts to operate on the
        unshifted word.
      - Optimize 64bit comparisons of values expanded from 32bit to use
        a 32bit comparison instead.
      - Change CodeStubAssembler::UntagSmi to first sign-extend and then
        right-shift to enable better address computations for Smi indices.
      
      Bug: v8:9962
      Change-Id: If91300f365e8f01457aebf0bd43bdf88b305c460
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135734
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67378}
      ff22ae80
  20. 31 Mar, 2020 1 commit
  21. 17 Mar, 2020 1 commit
  22. 06 Feb, 2020 1 commit
  23. 23 Jan, 2020 1 commit
  24. 21 Jan, 2020 1 commit
  25. 20 Jan, 2020 1 commit
    • Jakob Gruber's avatar
      [gasm] Automatically mark all loop exits as loop peeling candidates · 73ae0c8e
      Jakob Gruber authored
      The loop peeling optimization requires all loop exits to be marked
      with {LoopExit,LoopExitEffect,LoopExitValue} nodes in order to peel
      the first loop iteration. Previously, the graph assembler only marked
      the default loop exit (taken once the loop condition evaluates to
      false).
      
      This CL adds more general support, such that all exits taken inside
      the loop body passed to a ForBuilder are automatically marked. We do
      this by tracking the current loop nesting level and a stack of loop
      headers inside the graph assembler, and creating marker nodes as needed
      inside MergeState.
      
      Bug: v8:9972,chromium:1038297
      Change-Id: I1d0196ead55d6678880f8330c7cc7b8d4f2cea06
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2000740
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65861}
      73ae0c8e
  26. 15 Jan, 2020 3 commits
  27. 25 Dec, 2019 2 commits
  28. 23 Dec, 2019 1 commit
  29. 18 Dec, 2019 1 commit
  30. 16 Dec, 2019 1 commit
  31. 10 Dec, 2019 2 commits
  32. 28 Nov, 2019 1 commit