1. 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
  2. 23 Jul, 2019 1 commit
  3. 13 Jun, 2019 2 commits
  4. 12 Jun, 2019 1 commit
  5. 23 May, 2019 1 commit
  6. 20 May, 2019 1 commit
  7. 17 May, 2019 2 commits
  8. 31 Jan, 2019 1 commit
  9. 30 Jan, 2019 1 commit
  10. 17 Dec, 2018 1 commit
  11. 13 Nov, 2018 2 commits
  12. 08 Nov, 2018 1 commit
  13. 05 Nov, 2018 1 commit
  14. 29 Oct, 2018 1 commit
  15. 23 Oct, 2018 1 commit
  16. 22 Oct, 2018 2 commits
  17. 18 Oct, 2018 1 commit
  18. 17 Oct, 2018 1 commit
  19. 16 Oct, 2018 1 commit
  20. 11 Oct, 2018 1 commit
  21. 09 Oct, 2018 1 commit