- 16 Aug, 2021 1 commit
-
-
Michael Lippautz authored
Adds a heap verification GN arg to gate the marking verifier and live bytes verification on. The flag may be used in future for other more expensive checks as well. Currently, the flag is automatically enabled in dcheck_is_on and debug builds. The change enables live bytes verification for the library in regular debug builds which may flush out issues. Bug: v8:11785 Change-Id: I0f41bc0d76ebea9f6a8c9315c947598015ee5d68 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3097868 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#76325}
-
- 12 Jul, 2021 2 commits
-
-
Michael Lippautz authored
So far, discarded size was maintained by the sweeper but not wired up anywere. Changes in this patch: - Wire up resident size in heap statistics collection. - Fix bugs in reporting committed and resident size. - Sweeper test: Enforce some internal details. The details should not not be checked broadly but be kept as a detail to the sweeper itself. - Stats collection: Test that committed and resident set size are reported and differ after discarding GCs. Bug: chromium:1056170 Change-Id: Icf8871c7ea3b28253233485c736b2ca4816fd6f2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3020971Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75684}
-
Michael Lippautz authored
Add discarded of memory on memory reducing garbage collections. In addition, add tracking of discarded memory and properly adjust the resident memory of heap dumps. - Memory is discarded during sweeping and the counter is persistent across garbage collection cycles. - Subsequent sweep calls are not supposed to touch the memory anymore. - As a simplification, discarded memory is tracked on page granularity and assumed to be fully paged in as soon as a page's free list entries are reused for allocation. Change-Id: Icfd58f49f3400c4df0d482e20326a0c43c1ca9f5 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3015563 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#75677}
-
- 27 May, 2021 3 commits
-
-
Omer Katz authored
This CL does 2 things: 1) Implements forwarding of histogram reporting from cppgc to v8 via CppHeap. 2) Establishes the pipeline in GCTracer for sending the histograms to the embedder. Currently only cppgc histograms are populated. See crrev.com/c/2916956 for usage. Bug: chromium:1154636 Change-Id: I8150116f757e105d0dfac96a3f6e7dd95717f5bd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917033 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74830}
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I610f886699f7d1e8f343785b8dc9d9a9bd9c918a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2922244 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74826}
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I7d8d27f7497ec403dd463e0e2a5b3d0134cfb637 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919960Reviewed-by: Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74817}
-
- 16 Mar, 2021 1 commit
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I4b43b78be23b8220b89f1ee5177f6b9b3c18146d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2764748 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#73452}
-
- 08 Mar, 2021 1 commit
-
-
Michael Lippautz authored
Add an explicit FreeUnreferencedObject() call that can be used to reclaim objects that are guaranteed to not be referenced anymore by the embedder. It is up to the embedder to ensure correctness. Change-Id: I7f2d86d9639e8b805f79a8fd0a346903f63171e5 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2737301 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#73262}
-
- 03 Mar, 2021 1 commit
-
-
Omer Katz authored
This was missing in CppHeap which means the used_bytes counter in EmbedderTracing was reset to 0 after every GC. Bug: chromium:1056170 Change-Id: Iddb0aa1eff9cc354622653376c6623364e015c5d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2732668 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#73167}
-
- 17 Feb, 2021 1 commit
-
-
Omer Katz authored
Process global accessors for total physical size and used size are needed for blink. These are implemented via an allocation observer that atomically updates static counters. The public api only provides getters for the counters. An internal class is in charge of updating the counters as needed. A similar split is also applied to IsAnyIncrementalOrConcurrentMarking(). Drive-by: ProcessHeap is merged into cppgc::internal::WriteBarrier. Bug: chromium:1056170 Change-Id: Iaedebd1ac9d49238ce6bdd52ffa5d1ef4d28203d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695394 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72832}
-
- 15 Feb, 2021 1 commit
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I561166a7f1be658c5c35aa1caf8dbbbd2d720ab3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692815 Commit-Queue: Omer Katz <omerkatz@chromium.org> Auto-Submit: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72754}
-
- 11 Feb, 2021 1 commit
-
-
Omer Katz authored
HeapBase::CollectStatistics returns a HeapStatistics struct that can be used by blink to populate a memory dump. Bug: chromium:1056170 Change-Id: Ic147a02ba6b4aa77bf92cfca067da70b7e1af55b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2689181 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72660}
-
- 28 Jan, 2021 1 commit
-
-
Omer Katz authored
Update the MetricRecorder struct to have a similar structure and similar fields to the GC struct defined in v8-metrics.h Bug: chromium:1056170 Change-Id: Ieb77412476353557134aeac5cf8f66ab257e22dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2653236Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72394}
-
- 27 Jan, 2021 2 commits
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: Iaa3cefc652657246fffe7998dd8faa9d008d9195 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2652496 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72370}
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: Ia312e96b421d596d25cccf584c2df823bd9e1ea0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2652498Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72367}
-
- 22 Jan, 2021 2 commits
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I3d6cbff3e37bb541481a014056e539bd4824c37c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2642259 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72266}
-
Omer Katz authored
This CL introduces cppgc::HistogramRecorder api which is similar to the v8::metrics::Recorder api and is used by cppgc to report histogram samples to embedders. Embedders should implement the api if they want to collect histograms and provide an instance of it on heap creation. CppHeap uses an adaptor class that implements the HistogramRecorder api and is used to forward the relevant info to the relevant v8::metrics::Recorder. The api used 3 data structures: 2 for incremental steps that need to be reported as they come (marking and sweeping) and 1 for the end of a GC cycle that aggregates statistics over the entire cycle. The data structure only provide the "raw" samples (e.g. atomic mark time, incremental mark time, etc...). The embedder is expected to compute aggregate histogram on its own (e.g. overall marking time). Bug: chromium:1056170 Change-Id: If63ef50a29a21594f654edb83084598980d221ce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2642258 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@{#72256}
-
- 19 Nov, 2020 1 commit
-
-
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: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71284}
-
- 31 Aug, 2020 1 commit
-
-
Omer Katz authored
Heap growing estimates when to start incremental gc such that it will finish when we are expecting to finalize (i.e. when an atomic gc would be triggered). There is also a minimum ratio between limit for atomic gc and limit for incremental gc, to guarantee that incremental gc get's some time to run even with the application rarely allocates. This is a continuation of: https://chromium-review.googlesource.com/c/v8/v8/+/2377691 Bug: chromium:1056170 Change-Id: I8c87e98d60b6f8b5748558771a236f15385f7858 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2381454Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#69630}
-
- 05 Jun, 2020 1 commit
-
-
Michael Lippautz authored
The observers can use ResetAllocatedObjectSize() to e.g. implement a growing strategy that resets its limit on this call. Bug: chromium:1056170 Change-Id: Ib9553e00cc530ff89f44e4258c13d47f0b70568e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228885Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68205}
-
- 03 Jun, 2020 1 commit
-
-
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: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68150}
-