1. 29 Jun, 2020 1 commit
  2. 16 Jun, 2020 1 commit
  3. 15 Jun, 2020 1 commit
  4. 10 Jun, 2020 2 commits
    • Michael Lippautz's avatar
      cppgc: Introduce AllocationHandle · 935d9151
      Michael Lippautz authored
      Unified heap support in V8 requires having another (at least internal)
      heap that implements a unfied garbage collection strategy. This will
      not re-use the already existing cppgc::Heap because there should be no
      way in creating such a heap externally or scheduling stand-alone
      garbage collections.
      
      In order to have a common token, this CL introduces AllocationHandle
      which can be passed to MakeGarbageCollected to allocate C++ objects.
      V8 (soon) and the stand-alone heap both have methods to retrieve such
      a handle.
      
      This works around a problem with creating diamond class hierarchies
      when a base class would be exposed on the public API level.
      
      Fast paths for Blink are still possible because allocation handles can
      be cached the same way (e.g. global, or TLS) as a heap can be cached.
      
      Tbr: yangguo@chromium.org
      Bug: chromium:1056170
      Change-Id: I8e9472a2c24ef82d1178953e8429b1fd8a2344bc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238027
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68310}
      935d9151
    • Anton Bikineev's avatar
      cppgc: Fix byte accounting for large pages and reset labs · c036b6cd
      Anton Bikineev authored
      This fixes two issues:
      - labs resetting didn't account bytes as beeing freed;
      - large object were not accounted.
      
      The CL introduces a single bottleneck for labs resetting in
      ObjectAllocator, which is aware of StatsCollector. This way
      NormalSpace is treated as a value object and all invariants
      are maintained by ObjectAllocator (and Sweeper).
      
      Bug: chromium:1056170
      Change-Id: I027cc01fe5028a3dfa81905d7ea53dd12d1c1f20
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237629
      Commit-Queue: Anton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68286}
      c036b6cd
  5. 08 Jun, 2020 1 commit
  6. 03 Jun, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Add HeapStatsCollector · ab671ee8
      Michael Lippautz authored
      This ports HeapStatsCollector (former ThreadHeapStatsCollector) from
      Blink. The CL only ports accounting of allocated object size which is
      needed for a simple growing strategy in a follow up.
      
      HeapStatsCollector is a global dependency for most sub components as
      it provides infrastructure for measuring time (through trace scopes)
      and space.
      
      The general idea of HeapStatsCollector is to act as sink where all sub
      components push time and space information. This information is then
      gathered and made available via an event that is implemented as POD.
      Time-dependent info is available through regular getters (pull) and
      observers (push).
      
      Change-Id: I40b4d76e1a40c56e5df1a7353622318cde730e26
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225902
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68150}
      ab671ee8
  7. 02 Jun, 2020 1 commit
  8. 29 May, 2020 1 commit
  9. 28 May, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Rely on per-heap platform objects · 3d53d7ac
      Michael Lippautz authored
      Split platform into a process-global initialization part and per-heap
      platform objects.
      
      These platform objects still contain allocators and executors. With
      per-heap platforms GetForegroundTaskRunner() returns by definition the
      correct runner.
      
      In future, when initialized throuhg V8, an adapter can be used to
      translate between the different platforms, avoiding the needed for V8
      embedders to provide additional information.
      
      Bug: chromium:1056170
      Change-Id: I11bdd15e945687cfbdf38cae4137facb02559e0a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218030
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Anton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68059}
      3d53d7ac
  10. 26 May, 2020 3 commits
  11. 18 May, 2020 1 commit
  12. 13 May, 2020 2 commits
  13. 12 May, 2020 3 commits
  14. 08 May, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Implement allocation on custom spaces · 611d1bb9
      Michael Lippautz authored
      This patch provides infrastructure to pin object types to specific
      spaces. This allows embedders to create mutual exclusive arenas for
      certain (base) types. In future, this will also be used to provide
      sliding-window compaction on certain custom spaces.
      
      We mainly preserve the existing infrastructure with the difference
      that spaces are now slightly more dynamic than in Blink as they are
      kept in a vector instead of a fixed-size array.
      
      The mechanism differs from Blink in that it does not allow the user
      object to call allocation methods directly but instead provides a
      trait that can be overridden to specify a custom space.
      
      The patch preserves templatization for objects that do not go into
      custom spaces to safe a branch in the allocation hot path.
      
      Change-Id: I08aa6932348e2d6258e19c4a32d189865f459f02
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187611
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67666}
      611d1bb9
  15. 07 May, 2020 3 commits
    • Omer Katz's avatar
      Reland "cppgc: Initial marking loop" · f197fd27
      Omer Katz authored
      This reverts commit dc1af6a2.
      
      Reason for revert: Diff in patchset 2
      
      Original change's description:
      > Revert "cppgc: Initial marking loop"
      > 
      > This reverts commit fb9a19fe.
      > 
      > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028
      > 
      > Original change's description:
      > > cppgc: Initial marking loop
      > > 
      > > This CL introduces:
      > > - Worklist
      > > - MarkingHandler to manage gc marking phase
      > > - Integration into CollectGarbage for atomic pause GC
      > > - MarkingVisitor for main thread marking
      > > 
      > > Still missing from this CL:
      > > - Proper handling for stack scanning
      > > - Handling of previously not fully constructed objects
      > > 
      > > Bug: chromium:1056170
      > > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      > > Commit-Queue: Omer Katz <omerkatz@chromium.org>
      > > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#67642}
      > 
      > TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org
      > 
      > Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: chromium:1056170
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67643}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org,nicohartmann@chromium.org
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: chromium:1056170
      Change-Id: I54e963e2aeaaf16069bdcdb019c0ac65e28ef6e2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187733Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67654}
      f197fd27
    • Nico Hartmann's avatar
      Revert "cppgc: Initial marking loop" · dc1af6a2
      Nico Hartmann authored
      This reverts commit fb9a19fe.
      
      Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028
      
      Original change's description:
      > cppgc: Initial marking loop
      > 
      > This CL introduces:
      > - Worklist
      > - MarkingHandler to manage gc marking phase
      > - Integration into CollectGarbage for atomic pause GC
      > - MarkingVisitor for main thread marking
      > 
      > Still missing from this CL:
      > - Proper handling for stack scanning
      > - Handling of previously not fully constructed objects
      > 
      > Bug: chromium:1056170
      > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      > Commit-Queue: Omer Katz <omerkatz@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67642}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org
      
      Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67643}
      dc1af6a2
    • Omer Katz's avatar
      cppgc: Initial marking loop · fb9a19fe
      Omer Katz authored
      This CL introduces:
      - Worklist
      - MarkingHandler to manage gc marking phase
      - Integration into CollectGarbage for atomic pause GC
      - MarkingVisitor for main thread marking
      
      Still missing from this CL:
      - Proper handling for stack scanning
      - Handling of previously not fully constructed objects
      
      Bug: chromium:1056170
      Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67642}
      fb9a19fe
  16. 06 May, 2020 2 commits
  17. 05 May, 2020 1 commit
  18. 29 Apr, 2020 1 commit
  19. 28 Apr, 2020 1 commit
  20. 15 Apr, 2020 1 commit
  21. 14 Apr, 2020 2 commits
  22. 09 Apr, 2020 1 commit
  23. 08 Apr, 2020 2 commits
  24. 07 Apr, 2020 1 commit
  25. 06 Apr, 2020 3 commits
  26. 27 Mar, 2020 1 commit