1. 15 Sep, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Don't lower feedback-collecting operators · a8a1776e
      Jakob Gruber authored
      Feedback collection is currently implemented only for JS operators in
      generic lowering. Missing feedback collection results in soft-deopts
      immediately after tiering up to TF from NCI code.
      
      In this CL we disable two large classes of such problematic lowerings
      for NCI code, type hint lowering and typed lowering.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:8888
      Change-Id: Ia8452775616074b7ad6dfe930f305449db3f5682
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2410180
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69910}
      a8a1776e
  2. 11 Sep, 2020 2 commits
  3. 13 Aug, 2020 1 commit
  4. 12 Aug, 2020 1 commit
    • Santiago Aboy Solanes's avatar
      [compiler] Have one unique PersistentHandles container · 64828a54
      Santiago Aboy Solanes authored
      The (now unique)PersistentHandles container follows this path:
        1) PersistentHandles created via PersistentHandlesScope inside of
           CompilationHandleScope
        2) Owned by OptimizedCompilationInfo
        3) Owned by JSHeapBroker
        4) Owned by the broker's LocalHeap
        5) Back to the broker for a brief moment (after tearing down the
          LocalHeap as part of exiting LocalHeapScope)
        6) Back to OptimizedCompilationInfo when exiting the LocalHeapScope.
      
      There is a special case in GenerateCodeForTesting where the JSHeapBroker
      will not be retired in that same method. In this case, we need to
      re-attach the PersistentHandles container to the JSHeapBroker.
      
      The identity map of the persistent & canonical handles also gets passed
      around like the persistent handles. The only difference is that is
      created in the CanonicalHandleScope (i.e step 1) is different).
      
      Bug: v8:7790
      Change-Id: I2da77a7e08f3fd360a46b606c5fbda08c0af27df
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332811
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69360}
      64828a54
  5. 28 Jul, 2020 2 commits
  6. 14 Jul, 2020 1 commit
  7. 10 Jul, 2020 1 commit
  8. 07 Jul, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Don't expose feedback to compiler phases in NCI mode · e33e8481
      Jakob Gruber authored
      Native context independent code generation should, at the moment, not
      use any collected feedback.
      
      We implement this by returning InsufficientFeedback from the heap
      broker's ReadFeedbackForX methods if currently compiling nci code.
      Thus all feedback.IsInsufficient() calls inside the compiler will
      return true (disabling feedback-based optimizations).
      FeedbackSource::IsValid() (used in generic lowering) can still return
      true.
      
      Bug: v8:8888
      Change-Id: I198b6457276073e7376c777b206c50726f1b3645
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2284494
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68726}
      e33e8481
  9. 15 Jun, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Add native_context_independent flags · f30b53bd
      Jakob Gruber authored
      ... to OptimizedCompilationInfo, BytecodeGraphBuilder, and
      JSHeapBroker.
      
      Also add first uses of these flags in pipeline.cc by skipping certain
      phases when nci is enabled. With this change, tests in the NCI variant
      will start to fail since generic lowering is not fully implemented.
      These implementations will follow incrementally in the next days.
      
      Bug: v8:8888
      Change-Id: I3f570fb92f09059d1f1f4015f88ffe80ccf746ad
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2239572
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68339}
      f30b53bd
  10. 18 May, 2020 1 commit
    • Clemens Backes's avatar
      [utils] Synchronize across StdoutStream instances · a0687c71
      Clemens Backes authored
      We constantly fight against scrambled output with --print-wasm-code and
      other flags. Passing --single-threaded only partially mitigates this,
      because there could still be multiple isolates (e.g. Workers), and we
      sometimes failed to really execute in a single thread if that flag was
      set.
      Hence this CL solves the problem in a more fundamental way: Whenever a
      {StdoutStream} is constructed, it implicitly takes a global recursive
      mutex. The recursive mutex is needed because we still have some printing
      methods that don't take a stream as parameter, and instead create their
      own instance of {StdoutStream}, which should not crash of course.
      
      The overhead of taking a mutex should be acceptable, since output to
      stdout mostly happens if special tracing flags have been passed, and is
      slow anyway.
      
      This CL ensures that the {StdoutStream} is used at least for
      --print-code, --print-wasm-code, and --trace-turbo-graph.
      More flags can later be ported on demand.
      
      The {JSHeapBroker} class was modified to not contain a {StdoutStream},
      but instead create one on demand.
      
      R=mlippautz@chromium.org, tebbi@chromium.org
      CC=ahaas@chromium.org
      
      Bug: v8:10506
      Change-Id: Ib9cf8d76aa79553b4215bb7775e6d47a8179aafa
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201767Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67855}
      a0687c71
  11. 09 Mar, 2020 1 commit
  12. 22 Jan, 2020 1 commit
  13. 16 Jan, 2020 1 commit
  14. 09 Jan, 2020 1 commit
  15. 08 Jan, 2020 1 commit
  16. 07 Jan, 2020 1 commit
  17. 06 Jan, 2020 2 commits
    • Mythri Alle's avatar
      Revert "Reland "[TurboFan] Don't serialize read-only heap objects"" · 338799cd
      Mythri Alle authored
      This reverts commit a4db68d4.
      
      Reason for revert: Speculatively reverting: failure on win32 bot
      https://ci.chromium.org/p/v8/builders/ci/V8%20Win32%20-%20debug/23495
      Not sure if the test is flaky or this cl is actually making it flaky. Reverting while I investigate this issue.
      
      Original change's description:
      > Reland "[TurboFan] Don't serialize read-only heap objects"
      > 
      > Reland the cl with fixes to TSAN failures.
      > 
      > This reverts commit 03c9de73.
      > 
      > 
      > Original change's description:
      > > Revert "[TurboFan] Don't serialize read-only heap objects"
      > >
      > > This reverts commit 9f18e55f.
      > >
      > > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/29660
      > >
      > > Original change's description:
      > > > [TurboFan] Don't serialize read-only heap objects
      > > >
      > > > Read-only heap objects are immutable and immovable. It is safe to access
      > > > these objects directly from the heap. Not having to serialize them
      > > > reduces the time we spend on main thread especially for TurboProp.
      > > >
      > > > Bug: v8:9684
      > > > Change-Id: Ibabb7076af50c9007d2a8ed57fe257406958fb6a
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955596
      > > > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > > > Reviewed-by: Maya Lekova <mslekova@chromium.org>
      > > > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#65490}
      > >
      > > TBR=mvstanton@chromium.org,neis@chromium.org,mythria@chromium.org,mslekova@chromium.org
      > >
      > > Change-Id: If2d8649cdc083f7d064684352501320a96a1ba2c
      > > No-Presubmit: true
      > > No-Tree-Checks: true
      > > No-Try: true
      > > Bug: v8:9684
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1973732
      > > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#65492}
      > 
      > TBR=mvstanton@chromium.org,neis@chromium.org,mythria@chromium.org,mslekova@chromium.org,nicohartmann@chromium.org
      > 
      > # Not skipping CQ checks because original CL landed > 1 day ago.
      > 
      > Bug: v8:9684
      > Change-Id: I54c9973d0f4d88504b2fb920feb3480fe1f1e1fc
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980573
      > Reviewed-by: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#65584}
      
      TBR=mvstanton@chromium.org,neis@chromium.org,mythria@chromium.org,mslekova@chromium.org,nicohartmann@chromium.org
      
      Change-Id: Ic28774a2530bb7b6688a974f2af4a23ec04ef236
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9684
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1987250Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65585}
      338799cd
    • Mythri A's avatar
      Reland "[TurboFan] Don't serialize read-only heap objects" · a4db68d4
      Mythri A authored
      Reland the cl with fixes to TSAN failures.
      
      This reverts commit 03c9de73.
      
      
      Original change's description:
      > Revert "[TurboFan] Don't serialize read-only heap objects"
      >
      > This reverts commit 9f18e55f.
      >
      > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/29660
      >
      > Original change's description:
      > > [TurboFan] Don't serialize read-only heap objects
      > >
      > > Read-only heap objects are immutable and immovable. It is safe to access
      > > these objects directly from the heap. Not having to serialize them
      > > reduces the time we spend on main thread especially for TurboProp.
      > >
      > > Bug: v8:9684
      > > Change-Id: Ibabb7076af50c9007d2a8ed57fe257406958fb6a
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955596
      > > Reviewed-by: Michael Stanton <mvstanton@chromium.org>
      > > Reviewed-by: Maya Lekova <mslekova@chromium.org>
      > > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#65490}
      >
      > TBR=mvstanton@chromium.org,neis@chromium.org,mythria@chromium.org,mslekova@chromium.org
      >
      > Change-Id: If2d8649cdc083f7d064684352501320a96a1ba2c
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: v8:9684
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1973732
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#65492}
      
      TBR=mvstanton@chromium.org,neis@chromium.org,mythria@chromium.org,mslekova@chromium.org,nicohartmann@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9684
      Change-Id: I54c9973d0f4d88504b2fb920feb3480fe1f1e1fc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980573Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65584}
      a4db68d4
  18. 31 Dec, 2019 1 commit
  19. 20 Dec, 2019 1 commit
  20. 18 Dec, 2019 2 commits
  21. 31 Oct, 2019 1 commit
  22. 14 Oct, 2019 1 commit
  23. 27 Sep, 2019 1 commit
  24. 02 Sep, 2019 2 commits
  25. 30 Aug, 2019 2 commits
  26. 26 Aug, 2019 1 commit
  27. 23 Aug, 2019 2 commits
  28. 21 Aug, 2019 1 commit
  29. 20 Aug, 2019 1 commit
  30. 19 Aug, 2019 4 commits
    • Georg Neis's avatar
      [turbofan] Improve --trace-turbo-inlining and TRACE_BROKER_MISSING · 2cccb464
      Georg Neis authored
      - Eliminate unconditional heap reads in tracing code.
      - Change operator<< on ObjectRef to additionally print
        the Brief() output when the broker is disabled.
      - Print line number in TRACE_BROKER_MISSING and make
        some messages more consistent.
      - Make PrintCandidates output clearer.
      - Be more consistent about dereferencing optionals.
      
      Bug: v8:7790, chromium:990478
      Change-Id: I2917529d5138a0d63ad476d3f8fee6a963767b23
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758311
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63242}
      2cccb464
    • Georg Neis's avatar
      Reland "[turbofan] Various serializer/broker improvements" · 4b1af9fc
      Georg Neis authored
      This is a reland of 29585a06 after
      removing an incorrect DCHECK.
      
      Original change's description:
      > [turbofan] Various serializer/broker improvements
      >
      > They are all somewhat entangled, sorry for the big CL.
      >
      > - Brokerize remaining feedback vector slots.
      > - Introduce Hints::SingleConstant helper.
      > - Introduce SerializationPolicy enum.
      > - Eliminate use of nullptr for megamorphic load/store ic feedback.
      >   Instead use the corresponding ProcessedFeedback with an empty list
      >   of maps or the like. new class MegamorphicFeedback.
      > - Separate processing of feedback from serialization. This eliminates
      >   code duplication.
      > - Be very careful when clearing hints not to overwrite hints that are
      >   being processed.
      > - Move AccessInfos out of NamedAccessFeedback. Always store them in
      >   property_access_infos_ map on broker. (This was actually unused
      >   before, somewhat by mistake.)
      > - Support map inference in concurrent inlining. Rewrite
      >   ElementAccessFeedback such that we can refine it with the set of
      >   inferred maps.
      >
      > TBR: mvstanton@chromium.org
      > Change-Id: I05e9eb250bdffc6dff29db01742550a86a41cb31
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1752853
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63232}
      
      TBR: mvstanton@chromium.org
      Bug: v8:7790
      Change-Id: Ia4acd31b339a941ee065e1ae4835bb7b85d5685e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758319Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63241}
      4b1af9fc
    • Maya Lekova's avatar
      Revert "[turbofan] Various serializer/broker improvements" · 0645b26a
      Maya Lekova authored
      This reverts commit 29585a06.
      
      Reason for revert: Breaks GC stress bots - 
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/24009
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/27281
      
      Original change's description:
      > [turbofan] Various serializer/broker improvements
      > 
      > They are all somewhat entangled, sorry for the big CL.
      > 
      > - Brokerize remaining feedback vector slots.
      > - Introduce Hints::SingleConstant helper.
      > - Introduce SerializationPolicy enum.
      > - Eliminate use of nullptr for megamorphic load/store ic feedback.
      >   Instead use the corresponding ProcessedFeedback with an empty list
      >   of maps or the like. new class MegamorphicFeedback.
      > - Separate processing of feedback from serialization. This eliminates
      >   code duplication.
      > - Be very careful when clearing hints not to overwrite hints that are
      >   being processed.
      > - Move AccessInfos out of NamedAccessFeedback. Always store them in
      >   property_access_infos_ map on broker. (This was actually unused
      >   before, somewhat by mistake.)
      > - Support map inference in concurrent inlining. Rewrite
      >   ElementAccessFeedback such that we can refine it with the set of
      >   inferred maps.
      > 
      > TBR: mvstanton@chromium.org
      > Change-Id: I05e9eb250bdffc6dff29db01742550a86a41cb31
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1752853
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63232}
      
      TBR=mvstanton@chromium.org,neis@chromium.org
      
      Change-Id: I88625d92fddf993db63661666c59af05a47b2b58
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758314Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63237}
      0645b26a
    • Georg Neis's avatar
      [turbofan] Various serializer/broker improvements · 29585a06
      Georg Neis authored
      They are all somewhat entangled, sorry for the big CL.
      
      - Brokerize remaining feedback vector slots.
      - Introduce Hints::SingleConstant helper.
      - Introduce SerializationPolicy enum.
      - Eliminate use of nullptr for megamorphic load/store ic feedback.
        Instead use the corresponding ProcessedFeedback with an empty list
        of maps or the like. new class MegamorphicFeedback.
      - Separate processing of feedback from serialization. This eliminates
        code duplication.
      - Be very careful when clearing hints not to overwrite hints that are
        being processed.
      - Move AccessInfos out of NamedAccessFeedback. Always store them in
        property_access_infos_ map on broker. (This was actually unused
        before, somewhat by mistake.)
      - Support map inference in concurrent inlining. Rewrite
        ElementAccessFeedback such that we can refine it with the set of
        inferred maps.
      
      TBR: mvstanton@chromium.org
      Change-Id: I05e9eb250bdffc6dff29db01742550a86a41cb31
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1752853
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63232}
      29585a06