1. 06 Jan, 2021 1 commit
  2. 03 Jun, 2020 1 commit
  3. 11 May, 2020 1 commit
  4. 06 May, 2020 1 commit
  5. 05 May, 2020 1 commit
  6. 28 Apr, 2020 1 commit
    • Leszek Swirski's avatar
      [heap] Verify filler slots don't need clearing · 910d2d79
      Leszek Swirski authored
      When creating a filler, we pass through whether we need to clear slots
      in the old to new remembered set.
      
      This patch adds a verification check that, when we claim we don't need
      to clear slots, checks that no slots are set in the remembered set for
      the range of the filler. Effectively, this is a range counterpart to
      VerifyClearedSlot.
      
      Change-Id: Id994c56d941988cc282463304bc7307a51943e99
      Bug: chromium:1075999
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2139572
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67453}
      910d2d79
  7. 09 Dec, 2019 1 commit
    • Dominik Inführ's avatar
      [heap] Reland: Reduce size of possibly empty buckets · 56f56df6
      Dominik Inführ authored
      Before this CL a byte was used per bucket to store whether the bucket
      is possibly empty or not. This CL changes this such that each bucket
      only needs a single bit.
      
      PossiblyEmptyBuckets is now a word in the page header. If more bits
      are needed than fit into a single word, an external bitmap is
      allocated using AlignedAlloc. Storing this on the page header, allows
      to remove initial_buckets from the SlotSet. The SlotSet allocation is
      then again a power-of-2 in release mode.
      
      Reland of https://crrev.com/c/1906376: Incorrect DCHECK was removed.
      WordsForBuckets was simplified and a test was added for it.
      
      Bug: chromium:1023139
      Change-Id: I9a08e03a9c10e5781a146b9a28dab38824aad91f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954391Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65385}
      56f56df6
  8. 18 Nov, 2019 1 commit
    • Michael Achenbach's avatar
      Revert "[heap] Reduce size of possibly empty buckets" · 37e62175
      Michael Achenbach authored
      This reverts commit 80caf2cf.
      
      Reason for revert: Breaks gpu tests:
      https://ci.chromium.org/p/v8/builders/ci/Win%20V8%20FYI%20Release%20(NVIDIA)/5570
      # Debug check failed: !possibly_empty_buckets->Contains(bucket_index).
      
      Original change's description:
      > [heap] Reduce size of possibly empty buckets
      > 
      > Before this CL a byte was used per bucket to store whether the bucket
      > is possibly empty or not. This CL changes this such that each bucket
      > only needs a single bit.
      > 
      > PossiblyEmptyBuckets is now a word in the page header. If more bits
      > are needed than fit into a single word, an external bitmap is
      > allocated using AlignedAlloc. Storing this on the page header, allows
      > to remove initial_buckets from the SlotSet. The SlotSet allocation is
      > then again a power-of-2 in release mode.
      > 
      > Change-Id: If61fd5cfa153f98757beeb444a530f6e2803fdb6
      > Bug: chromium:1023139
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1906376
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#64991}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:1023139
      Change-Id: Ia90b07b9562af934dacba012da31e4f172f2922d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1918258Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65001}
      37e62175
  9. 16 Nov, 2019 1 commit
    • Dominik Inführ's avatar
      [heap] Reduce size of possibly empty buckets · 80caf2cf
      Dominik Inführ authored
      Before this CL a byte was used per bucket to store whether the bucket
      is possibly empty or not. This CL changes this such that each bucket
      only needs a single bit.
      
      PossiblyEmptyBuckets is now a word in the page header. If more bits
      are needed than fit into a single word, an external bitmap is
      allocated using AlignedAlloc. Storing this on the page header, allows
      to remove initial_buckets from the SlotSet. The SlotSet allocation is
      then again a power-of-2 in release mode.
      
      Change-Id: If61fd5cfa153f98757beeb444a530f6e2803fdb6
      Bug: chromium:1023139
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1906376
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64991}
      80caf2cf
  10. 05 Nov, 2019 1 commit
    • Dominik Inführ's avatar
      [heap] Avoid iterating all pages when freeing empty buckets · add50f20
      Dominik Inführ authored
      At the end of scavenge, the GC iterates all pages to search for empty
      buckets and free them. With this CL the scavenger marks buckets
      (and their corresponding pages) that were empty to reduce work.
      After finishing scavenging the GC only needs to revisit those marked
      buckets.
      
      Unlike (minor) mark-compact, the scavenger can't directly free those
      buckets, since the evacuation and pointer updating-phases are
      not separated.
      
      Right now the pages are processed sequentially but this could be
      parallelized in a subsequent CL.
      
      Change-Id: I47ed8c0e952b06c5d960e39a6f38e745d5618656
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1889884
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64781}
      add50f20
  11. 30 Oct, 2019 1 commit
  12. 17 Oct, 2019 1 commit
    • Dominik Inführ's avatar
      [heap] Add flag to promote young objects in MC · 13ddba2a
      Dominik Inführ authored
      Add FLAG_always_promote_young_mc that always promotes young objects
      during a Full GC when enabled. This flag guarantees that the young gen
      and the sweeping remembered set are empty after a full GC.
      
      This CL also makes use of the fact that the sweeping remembered set is
      empty and only invalidates an object when there were old-to-new slots
      recorded on its page.
      
      Bug: chromium:1014943
      Change-Id: Idfb13dfbe76bad5ec8b485a60bebc30531aec649
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1863201
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64348}
      13ddba2a
  13. 07 Oct, 2019 2 commits
  14. 04 Oct, 2019 2 commits
  15. 25 Sep, 2019 1 commit
  16. 16 Sep, 2019 1 commit
    • Dominik Inführ's avatar
      [heap] Split old-to-new remembered set · 167a8946
      Dominik Inführ authored
      Split OLD_TO_NEW remembered set and add OLD_TO_NEW_SWEEPING. The
      OLD_TO_NEW remembered set is moved to OLD_TO_NEW_SWEEPING during
      mark-compact. OLD_TO_NEW_SWEEPING is then modified by the sweeper.
      Before using the page again, OLD_TO_NEW and OLD_TO_NEW_SWEEPING are
      merged again.
      
      This means only the main thread modifies OLD_TO_NEW, the sweeper only
      removes entries from OLD_TO_NEW_SWEEPING. We can use this property
      to make accesses non-atomic in a subsequent CL.
      
      Bug: v8:9454
      Change-Id: I9057cf85818d647775ae4c7beec4c8ccf73e18f7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1771783Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63807}
      167a8946
  17. 13 Sep, 2019 1 commit
  18. 26 Aug, 2019 1 commit
  19. 25 Aug, 2019 1 commit
    • Dominik Inführ's avatar
      Revert "[heap] Introduce old-to-new invalidation set" · f584f7cc
      Dominik Inführ authored
      This reverts commit 604b0e1e.
      
      Reason for revert: Clusterfuzz found an issue.
      
      Original change's description:
      > [heap] Introduce old-to-new invalidation set
      > 
      > Introduce list of invalidated objects for old-to-new slots. Objects
      > are registered as invalidated in NotifyObjectLayoutChange, however
      > no slots are filtered right now. Slots are still deleted, so all
      > recorded slots are valid.
      > 
      > Bug: v8:9454
      > Change-Id: Ic0ea15283c4075f4051fae6a5b148721265339f7
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1765528
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63367}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9454
      Change-Id: Ic898db38f297824aa54744123f85cd75df957159
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1770676Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63390}
      f584f7cc
  20. 23 Aug, 2019 1 commit
  21. 19 Aug, 2019 2 commits
    • Dominik Inführ's avatar
      Revert "Use list of invalidated objects for old-to-new refs" · 9a9ba762
      Dominik Inführ authored
      This reverts commit 60843b42.
      
      Reason for revert: TSAN detected issue between Scavenge workers.
      One task could invoke RefillFreeList(), while the other task iterates the remembered set of a swept page.
      
      Original change's description:
      > Use list of invalidated objects for old-to-new refs
      > 
      > Instead of inserting "deletion" entries into the store buffer, keep a
      > list of invalidated objects to filter out invalid old-to-new slots.
      > 
      > The first CL https://crrev.com/c/1704109 got reverted because both the
      > sweeper and the main task were modifying the invalidated slots data
      > structure concurrently. This CL changes this, such that the sweeper
      > only modifies the invalidated slots during the final atomic pause when
      > the main thread is not running. The sweeper does not need to clean this
      > data structure after the pause, since the "update pointers" phase
      > already removed all invalidated slots.
      > 
      > The second CL https://crrev.com/c/1733081 got reverted because the
      > sweeper might find more free space than the full GC before it. If an
      > object shrinks after the pause but before the sweep, the invalidated
      > object might span free memory and potentially new allocated objects.
      > Therefore shrink invalidated objects when processing swept pages on
      > the main thread. Also clean recorded slots in the gap.
      > 
      > TBR=petermarshall@chromium.org
      > 
      > Bug: v8:9454
      > Change-Id: I80d1fa3bbc24e97f7c97a373aaad66f105456f12
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1751795
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63239}
      
      TBR=ulan@chromium.org,hpayer@chromium.org,dinfuehr@chromium.org
      
      Change-Id: I9c6a371ebe36a1873acbe0d6c6a75dd2f5a55f4e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9454
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1760817Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63253}
      9a9ba762
    • Dominik Inführ's avatar
      Use list of invalidated objects for old-to-new refs · 60843b42
      Dominik Inführ authored
      Instead of inserting "deletion" entries into the store buffer, keep a
      list of invalidated objects to filter out invalid old-to-new slots.
      
      The first CL https://crrev.com/c/1704109 got reverted because both the
      sweeper and the main task were modifying the invalidated slots data
      structure concurrently. This CL changes this, such that the sweeper
      only modifies the invalidated slots during the final atomic pause when
      the main thread is not running. The sweeper does not need to clean this
      data structure after the pause, since the "update pointers" phase
      already removed all invalidated slots.
      
      The second CL https://crrev.com/c/1733081 got reverted because the
      sweeper might find more free space than the full GC before it. If an
      object shrinks after the pause but before the sweep, the invalidated
      object might span free memory and potentially new allocated objects.
      Therefore shrink invalidated objects when processing swept pages on
      the main thread. Also clean recorded slots in the gap.
      
      TBR=petermarshall@chromium.org
      
      Bug: v8:9454
      Change-Id: I80d1fa3bbc24e97f7c97a373aaad66f105456f12
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1751795
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63239}
      60843b42
  22. 08 Aug, 2019 1 commit
    • Dominik Inführ's avatar
      Revert "Use list of invalidated objects for old-to-new refs" · c9f9d1b0
      Dominik Inführ authored
      This reverts commit e2f98ec2.
      
      Reason for revert: Caused performance regression in ArrayLiteralInitialSpreadSmallHoley.
      
      Original change's description:
      > Use list of invalidated objects for old-to-new refs
      >
      > Instead of inserting "deletion" entries into the store buffer, keep
      > a list of invalidated objects to filter out invalid old-to-new slots.
      >
      > The first CL https://crrev.com/c/1704109 got reverted because both the sweeper and the main task were modifying the invalidated slots data structure concurrently. This CL changes this, such that the sweeper only modifies the invalidated slots during the final atomic pause when the main thread is not running. The sweeper does not need to clean this data structure after the pause, since the "update pointers" phase already removed all invalidated slots.
      >
      > Bug: v8:9454
      > Change-Id: Iffb5bf96de2c89eee1ee1231a3414a0f2a155cbc
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1733081
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63087}
      
      TBR=ulan@chromium.org,petermarshall@chromium.org,dinfuehr@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9454
      Change-Id: I328b9f72df45fc9570d4a4d1b5389eac010638c7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1743970
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63131}
      c9f9d1b0
  23. 06 Aug, 2019 1 commit
  24. 16 Jul, 2019 2 commits
  25. 21 Jun, 2019 1 commit
  26. 24 May, 2019 1 commit
  27. 23 May, 2019 1 commit
  28. 21 May, 2019 1 commit
  29. 30 Apr, 2019 1 commit
    • Mike Stanton's avatar
      Reland "[ptr-compr] New RelocInfo for compressed pointers." · ed319e84
      Mike Stanton authored
      Failure addressed by not exposing the new test to the jitless environment.
      (jgruber@ on TBR).
      
      New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support
      compressed pointers in generated code. Enum name EMBEDDED_OBJECT
      changed to FULL_EMBEDDED_OBJECT.
      
      RelocInfo::[set_]target_object() abstract away the difference between
      FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT.
      
      Compressed embedded objects can only be created at this time on
      x64 with pointer compression turned on. Arm64 constant pools don't
      support compressed objects at this time.
      
      NOPRESUBMIT=true
      
      Bug: v8:7703
      TBR: jgruber@chromium.org
      Change-Id: Ifff53b041bab09b4b8c3e16085e5df4aa2b99f4f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588461Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61104}
      ed319e84
  30. 29 Apr, 2019 3 commits
  31. 27 Feb, 2019 1 commit
  32. 20 Dec, 2018 1 commit
  33. 10 Dec, 2018 2 commits