1. 21 Jul, 2021 2 commits
  2. 26 May, 2021 1 commit
  3. 12 May, 2021 1 commit
  4. 05 Mar, 2021 1 commit
  5. 19 Nov, 2020 1 commit
    • Omer Katz's avatar
      cppgc: Add tracing scopes · 6a1a3a10
      Omer Katz authored
      This CL adds tracing scopes for the various cppgc classes.
      Scopes use TRACE_EVENT_BEGIN and TRACE_EVENT_END macros to report trace
      events. To do so they need to include trace-event.h. For unified heap
      builds, trace-event.h forwards to v8's src/tracing/trace-event.h. For
      other builds, trace-event.h provides a subset of
      src/tracing/trace-event.h that covers just the parts used by cppgc.
      
      This CL covers what we need for traces and blink gc metrics (up to
      renaming events from BlinkGC.* to CppGC.*). UMA and UKM are not yet
      handled.
      
      Bug: chromium:1056170
      Change-Id: Id92e84b27259ff0aadae7692f3d79d30896fb8e7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540548
      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@{#71284}
      6a1a3a10
  6. 23 Oct, 2020 1 commit
    • Omer Katz's avatar
      Reland "cppgc: Port backing store compaction." · b5979eaa
      Omer Katz authored
      This is a reland of 90ea9b35
      
      Original change's description:
      > cppgc: Port backing store compaction.
      >
      > This CL ports the existing backing store compaction algorithm from
      > blink. It does not attempt to improve on the existing algorithm.
      >
      > Currently only unified heap uses the compaction implementation. It is
      > never triggered through standalone GCs.
      >
      > The compaction implementation resides within an internal "subtle" namespace.
      >
      > Bug: v8:10990
      > Change-Id: I4aa781db1b711e7aafc34234c4fb142de84394d7
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485228
      > Commit-Queue: Omer Katz <omerkatz@chromium.org>
      > Reviewed-by: Anton Bikineev <bikineev@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70714}
      
      Bug: v8:10990
      Change-Id: I527c2042a26648d058bfe4d355527cce9a3eeadc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2492331
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70736}
      b5979eaa
  7. 22 Oct, 2020 2 commits
  8. 08 Oct, 2020 1 commit
  9. 19 Aug, 2020 1 commit
    • Omer Katz's avatar
      cppgc: Initial incremental marking implementation. · 132727fd
      Omer Katz authored
      This CL adds a basic implementation of incremental marking for standalone GC.
      Followup CLs include:
      * Use bytes instead of time as deadline
      * Port incremental marking schedule from blink
      * Mark on allocation
      * Guarantees for progres/termination for standalone GC
      * etc...
      
      Calling StartIncrementalGarbageCollection triggers StartMarking which
      schedules incremental marking as non-nestable tasks.
      For unified heap, marking will continue running until it runs out of
      work but it won't finalize independently.
      For standalone, when incremental runs out of work it will schedule a new
      task in which it will finalize marking and trigger the rest of the GC.
      Users of standalone can also force finalization before incremental
      marking as finished using FinalizeIncrementalGarbageCollectionIfRunning.
      Calling CollectGarbage would also finalize an on-going incremental GC
      if one exists. Otherwise it will trigger an atomic GC.
      
      See the following doc for explanation of the various methods:
      https://docs.google.com/document/d/1ZhJY2fOoD8sH53ZxMh2927Zl8sXqA7azJgcQTWx-YKs/edit?usp=sharing
      
      Bug: chromium:1056170
      Change-Id: I75ead414eb9da9f8b7f71c4638b9830fce7708ca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298009
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69480}
      132727fd
  10. 01 Jul, 2020 1 commit
  11. 17 Jun, 2020 1 commit
  12. 11 Jun, 2020 1 commit
  13. 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
  14. 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
  15. 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
  16. 26 May, 2020 3 commits