- 21 Jul, 2021 2 commits
-
-
Michael Lippautz authored
Change-Id: I62b6ea126cd15c06fc48c8c7eae14b2b0c9b1dda Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3043962 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75845}
-
Michael Lippautz authored
The concurrent sweeper destroyed large pages directly in case no finalizer was needed during sweeping. This is unsafe as the logic of BasePage::Destroy is not concurrency safe. Bug: chromium:1056170, chromium:1231053 Change-Id: I8ae9b27b916f8c4aee0c239c7ac8f2ec61d92c56 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3041671 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75842}
-
- 26 May, 2021 1 commit
-
-
Michael Lippautz authored
Also change: - {NormalPageSpace, LargePageSpace}::From() - ObjectAllocator::* Bug: v8:11822 Change-Id: I78a1a5379e16fc1e1c95136d7aa8cc34caed0413 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917042 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74784}
-
- 12 May, 2021 1 commit
-
-
Omer Katz authored
Replaces Payload* terminiology with Object* terminology. HoH::ObjectSize = just the object, without the header. HoH::AllocatedSize = both the object and the header. Payload terminology is retained only for pages. Bug: chromium:1056170 Change-Id: I568a324ae8728f098be642b024493c375ec873cb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2892079 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74538}
-
- 05 Mar, 2021 1 commit
-
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: Ic6e40d5e5e9bcca28a8c344adfab06f4e88701aa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2737302 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#73231}
-
- 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}
-
- 23 Oct, 2020 1 commit
-
-
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:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70736}
-
- 22 Oct, 2020 2 commits
-
-
Omer Katz authored
This reverts commit 90ea9b35. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31274? 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} TBR=mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: Iadae1ee0c6c0400f0e1a0a3805be5316a1d4b979 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10990 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2492330Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70716}
-
Omer Katz authored
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}
-
- 08 Oct, 2020 1 commit
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I4214978f31ae754e4940dfca4182ada202d17c01 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2456688Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70412}
-
- 19 Aug, 2020 1 commit
-
-
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:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69480}
-
- 01 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Move inlined methods to .h files accordingly, follwing style guide rule: https://google.github.io/styleguide/cppguide.html#Self_contained_Headers Bug: chromium:1056170 Change-Id: Ia6c4f82bd4352d507eece36e540ad0d318e56920 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2273858Reviewed-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@{#68627}
-
- 17 Jun, 2020 1 commit
-
-
Anton Bikineev authored
This adds the following things: - age table for 4K regions; - generational barrier for mixed 4K regions; - unmarking for major collections; - young generation flags. Bug: chromium:1029379 Change-Id: Ief1229f0dac5f90c5f06d3168c8ffb4b7d1f1b53 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2246566 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68379}
-
- 11 Jun, 2020 1 commit
-
-
Michael Lippautz authored
Since the registration requires calling into the library, there's no reason to get the heap through a magic getter on API level. Bug: chromium:1056170 Change-Id: I8d2b1d0fcee8c855908bd26c71a22826c493ed29 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238568 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68315}
-
- 10 Jun, 2020 2 commits
-
-
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:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68310}
-
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:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68286}
-
- 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}
-
- 28 May, 2020 1 commit
-
-
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:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68059}
-
- 26 May, 2020 3 commits
-
-
Anton Bikineev authored
This reverts commit a35d0e8c. The original CL is likely not a culprit for the infra failures. Bug: chromium:1056170 Change-Id: I8fa85db8a737fb01328021782f0c43626fa52b0d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215826Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#67977}
-
Maya Lekova authored
This reverts commit 9a0e6bd5. Reason for revert: Speculative revert for https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20builder/47777 Original change's description: > cppgc: Port concurrent sweeper > > This moves concurrent and incremental sweeping from Blink. This also > adds TestPlatform that makes it easier to test concurrent and > incremental sweeping. > > Drive-by: fix unmarking of large pages. > > Bug: chromium:1056170 > Change-Id: Ifd50ff67b9df17ff117a5f4d4eb5a2937d3023be > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2207132 > Commit-Queue: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67969} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: I5530f11f7b8560116324bb156ba98e426c0feb35 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215057Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#67970}
-
Anton Bikineev authored
This moves concurrent and incremental sweeping from Blink. This also adds TestPlatform that makes it easier to test concurrent and incremental sweeping. Drive-by: fix unmarking of large pages. Bug: chromium:1056170 Change-Id: Ifd50ff67b9df17ff117a5f4d4eb5a2937d3023be Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2207132 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67969}
-