1. 06 Oct, 2020 1 commit
    • Ulan Degenbaev's avatar
      Revert "[heap] Convert WeakObjects to heap::base::Worklist" · a282d2e9
      Ulan Degenbaev authored
      This reverts commit 969cdfe6.
      
      Reason for revert: speculative revert for crbug.com/1135472
      
      Original change's description:
      > [heap] Convert WeakObjects to heap::base::Worklist
      >
      > This splits WeakObjects into explicit global and local worklists.
      > The latter are defined in WeakObjects::Local and are thread-local.
      >
      > The main thread local worklist is stored in
      > MarkCompactCollector::local_weak_objects and exists during marking
      > similar to local_marking_worklists. Concurrent markers create their
      > own local worklists that are published at the end.
      >
      > Change-Id: I093fdc580b4609ce83455b860b90a5099085beac
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440607
      > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70317}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      Change-Id: I3fa3bfdcf3c359f46a3b56c19fb4e486883cde9d
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2452749Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70344}
      a282d2e9
  2. 05 Oct, 2020 1 commit
  3. 30 Jul, 2020 1 commit
  4. 07 Jul, 2020 2 commits
  5. 24 Apr, 2020 1 commit
  6. 16 Apr, 2020 1 commit
    • Shu-yu Guo's avatar
      [weakrefs] Port FinalizationRegistry cleanup loop to Torque · dbbaccca
      Shu-yu Guo authored
      To avoid shrinking the unregister token map on each pop of the cleared
      cell list, the Torque implementation of the cleanup loop avoids
      shrinking the map until the end of the loop.
      
      To support that, PopClearedCellHoldings is refactored to the Torque
      PopClearedCell which calls the
      JSFinalization::RemoveCellFromUnregisterTokenMap and the runtime
      ShrinkFinalizationRegistryUnregisterTokenMap. The former cannot GC is
      and is implemented in CSA as a fast C call. The latter can GC and is a
      runtime call.
      
      This also incidentally makes uses of FinalizationRegistry without
      unregister token a fast path that doesn't have to leave Torque.
      
      Bug: v8:8179
      Change-Id: Ia0c3c5800d26e31319a818f164f6bd3267355aa6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2137950
      Commit-Queue: Shu-yu Guo <syg@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67161}
      dbbaccca
  7. 25 Feb, 2020 1 commit
  8. 24 Feb, 2020 1 commit
  9. 19 Feb, 2020 1 commit
  10. 19 Dec, 2019 1 commit
    • Shu-yu Guo's avatar
      [weakrefs] Hold unregister tokens weakly · 45bb4498
      Shu-yu Guo authored
      Change unregister tokens to be held weakly instead of strongly. This
      enables the use case for an object to be used as its own unregister
      token.
      
      To avoid using an ephemeron table, FinalizationGroup's key_map is
      changed to key off unregister tokens' identity hashes. Because hashes
      may collide, a single key list may rarely contain multiple tokens. When
      a FinalizationGroup WeakCell's token becomes unreachable, during GC, it
      is removed from the the doubly linked key list and removed from the key
      map if it had a unique key.
      
      Bug: v8:8179
      Change-Id: If88fd2ab196e3f9a287990ae345117a0abb2f04d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1970493
      Commit-Queue: Shu-yu Guo <syg@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65532}
      45bb4498
  11. 30 Jul, 2019 1 commit
    • Sathya Gunasekaran's avatar
      [WeakRefs] Make cleanup callback run as a task · 743ce772
      Sathya Gunasekaran authored
      Previously, this was run as a microtask and this CL changes it to run
      as a separate task as mandated by the current WeakRef spec.
      
      This CL also introduces a FinalizationGroup type to the V8 API
      representing the JSFinalizationGroup. This has a `Cleanup`
      function that runs the cleanup callback associated with it.
      
      SetHostCleanupFinalizationGroupCallback is added to set
      the embedder defined HostCleanupFinalizationGroupCallback.
      
      ClearKeptObject is exposed on the v8::Isolate to reset the strongly
      held set of objects.
      
      The general workflow is the following:
      
      (a) When the GC notices that a given finalization group has dirty
          cells, it calls HostCleanupFinalizationGroupCallback with the given
          finalization group.
      
      (b) As part of HostCleanupFinalizationGroupCallback, the embedder
          enqueues a task that at some point later calls
          FinalizationGroup::Cleanup.
      
      (c) At some point in the future, FinalizationGroup::Cleanup is called,
          which runs the cleanup callback of the finalization group.
      
      This patch also includes d8 changes to use these new APIs. Currently,
      d8 cycles through the enqueued finalization groups after a synchronous
      turn (and it's microtask checkpoint) and runs the cleanup callbacks.
      
      Change-Id: I06eb4da2c103b2792a9c62bc4b98fd4e5c4892fc
      Bug: v8:8179
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1655655
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62984}
      743ce772
  12. 13 Jun, 2019 1 commit
  13. 23 May, 2019 2 commits
  14. 22 May, 2019 1 commit
  15. 31 Jan, 2019 1 commit
  16. 30 Jan, 2019 2 commits
  17. 16 Jan, 2019 1 commit
  18. 26 Dec, 2018 1 commit
  19. 20 Dec, 2018 1 commit
  20. 18 Dec, 2018 1 commit
  21. 08 Dec, 2018 1 commit
  22. 23 Nov, 2018 1 commit
  23. 24 Oct, 2018 1 commit
  24. 23 Oct, 2018 1 commit
  25. 22 Oct, 2018 2 commits
  26. 11 Oct, 2018 1 commit