1. 20 Nov, 2020 1 commit
  2. 28 Oct, 2020 1 commit
    • Tobias Tebbi's avatar
      [torque] generate C++ class definitions per Torque file · 03f60296
      Tobias Tebbi authored
      This CL splits the class definitions per .tq file, to realize the
      following relationship:
      A class defined in src/objects/foo.tq has a C++ definition in
      src/objects/foo.h. Torque then generates:
      
      - torque-generated/src/objects/foo-tq.inc
        An include file (no proper header) to be included in src/objects/foo.h
        containing the Torque-generated C++ class definition.
      
      - torque-generated/src/objects/foo-tq-inl.inc
        An include file (no proper header) to be included in
        src/objects/foo-inl.h containing inline function definitions.
      
      - torque-generated/src/objects/foo-tq.cc
        A source file including src/objects/foo-inl.h that contains non-inline
        function definitions.
      
      Advantages of this approach:
      - Avoid big monolithic headers and preserve the work that went into
        splitting objects.h
      - Moving a definition to Torque keeps everything in the same place
        from a C++ viewpoint, including a fully Torque-generated C++ class
        definition.
      - The Torque-generated include files do not need to be independent
        headers, necessary includes or forward declarations can just be added
        to the headers that include them.
      
      Drive-by changes:
      A bunch of definitions and files had to be moved or created to realize
      a consistent 1:1 relationship between .tq files and C++ headers.
      
      
      Bug: v8:7793
      TBR: hpayer@chromium.org
      Change-Id: I239a89a16d0bc856a8669d7c92aeafe24a7c7663
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2470571
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarSeth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#70853}
      03f60296
  3. 30 Jul, 2020 1 commit
  4. 11 May, 2020 1 commit
  5. 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
  6. 08 Apr, 2020 1 commit
  7. 03 Apr, 2020 1 commit
  8. 03 Mar, 2020 1 commit
  9. 24 Feb, 2020 1 commit
  10. 12 Feb, 2020 1 commit
  11. 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
  12. 18 Dec, 2019 1 commit
  13. 16 Dec, 2019 1 commit
    • Shu-yu Guo's avatar
      Rename FinalizationGroup WeakCells' key to unregister_token · fa5d5647
      Shu-yu Guo authored
      This is in preparation to hold on to unregister tokens weakly. The key
      map will be changed to be keyed off the tokens' identity hash instead of
      the token objects themselves. Once changed, a WeakCell's key (its
      token's hash) will be different from its unregister token. In
      particular, in case of collision, WeakCells with different unregister
      tokens may have the same key.
      
      Bug: v8:8179
      Change-Id: Ifa18ace915265340db7f01431161a6e0425f2927
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1968958
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Auto-Submit: Shu-yu Guo <syg@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65462}
      fa5d5647
  14. 07 Oct, 2019 1 commit
  15. 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
  16. 13 Jun, 2019 1 commit
  17. 23 May, 2019 1 commit
  18. 17 May, 2019 1 commit
  19. 16 May, 2019 2 commits
  20. 31 Jan, 2019 2 commits
  21. 30 Jan, 2019 1 commit
  22. 09 Jan, 2019 1 commit
  23. 26 Dec, 2018 1 commit
  24. 20 Dec, 2018 1 commit
  25. 19 Dec, 2018 1 commit
  26. 17 Dec, 2018 2 commits
  27. 08 Dec, 2018 1 commit
  28. 23 Nov, 2018 1 commit
  29. 05 Nov, 2018 2 commits
  30. 29 Oct, 2018 1 commit
  31. 24 Oct, 2018 1 commit
  32. 23 Oct, 2018 1 commit
  33. 22 Oct, 2018 2 commits
  34. 19 Oct, 2018 1 commit
  35. 18 Oct, 2018 1 commit