- 08 Mar, 2021 1 commit
-
-
Michael Lippautz authored
When objects are recorded for conservative handling and the GC is finalized conservatively, with a different stack, we rely on MarkNotFullyConstructedObjects(). In this method, the objects are initially marked, only to be forwarded to handlers that try to mark them again. Bug: chromium:1056170 Change-Id: I942e7b0ec88aae08e3fe06b7cb3ff4a86dc42f36 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2744074 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@{#73281}
-
- 25 Feb, 2021 1 commit
-
-
Omer Katz authored
This CL adds WasConservativeGC to HeapState which reports whether the last GC was finalized conservatively. The state is updated at the end of marking atomic pause. Currently the library integration in Blink ignores the stack state when scheduling a forced GC for testing. That means that we always schedule another GC after a forced GC. This causes a crash in web_tests which assume no GC is happening between forced GCs if the thread is not idle and no new allocations happen. Usage CL: https://crrev.com/c/2720201 Drive by: Fix stack state for MarkingVerifier in CppHeap. Bug: chromium:1056170 Change-Id: I6ad23ed7c1a53fae96425b968bc4b3eb18ce80b7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2720279 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#73064}
-
- 18 Feb, 2021 2 commits
-
-
Michael Lippautz authored
The atomic pause would not report any marked bytes which in turn would mean that the used bytes counter would stay at 0 for testing GCs that always use atomic marking. Bug: chromium:1056170 Change-Id: Ie35d9b3bc88766c4ef56271f05d944f4835ba431 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704662 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72850}
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I9151d31a27ed5fc8e8c98b77b2132aaa7ee562e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2702334Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72836}
-
- 17 Feb, 2021 2 commits
-
-
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}
-
Omer Katz authored
IsMarking returns true as long as a marker exists. That means IsMarking is true during weak processing as well. ActiveScriptWrappableManager in blink uses a weak callback that updates a HeapVector and thus can trigger a write barrier during the atomic pause (which violates a DCHECK in the barrier). Bug: chromium:1056170 Change-Id: I6304b38da9751320836a5e2407e8c7d529367bad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2700676Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72831}
-
- 16 Feb, 2021 1 commit
-
-
Omer Katz authored
On-heap hash maps in blink are limited to Member types and non-traceable types. The only exception to that is TraceWrapperV8Reference. Thus ephemerons can have non-gced traceable values. This values should not be pushed to the marking worklist since we expect everything in the worklist to be marked and not in construction (but these values don't have an object header). Instead, when getting a non-gced value we should immediately trace it. This is only relevant to ephemerons. Any other case would go through Trace(const T&) that dispatches to the TraceTrait. Blink has 1 use case of HeahHashMap from WeakMember<ScriptWrappable> to TraceWrapperV8Reference. Bug: chromium:1056170 Change-Id: Ia8f341d6bb1fc8fd3655b2be66b7814896549d1e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696648Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72763}
-
- 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}
-
- 09 Feb, 2021 1 commit
-
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I225f81235fe9d4f8fd26cc49446534e3f6c884ea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2684834 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72609}
-
- 08 Feb, 2021 1 commit
-
-
Michael Lippautz authored
This change avoid dispatching a write barrier during the atomic pause. The dispatch can generally be triggered through pre-finalizers. In future, further checks may be added to avoid mis-use of pre-finalizers. Bug: chromium:1056170, chromium:1175560 Change-Id: I119e18372633b2375f60e17b4c881f68bb20bf66 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2679685Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72560}
-
- 28 Jan, 2021 1 commit
-
-
Michael Lippautz authored
Allows for prohibiting GCs and will result in a crash in case a GC finalization event is triggered. Complements NoGarbageCollectionScope which ignores GC finalization events. Bug: chromium:1056170 Change-Id: Ie2a72a8675462b24692225af17c8f284318337ba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2656260Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72413}
-
- 22 Jan, 2021 1 commit
-
-
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}
-
- 30 Nov, 2020 1 commit
-
-
Omer Katz authored
Update scope names to match the new scope naming scheme we settled on. This CL also: 1) Adds high-level scopes for atomic mark/sweep/compact and incremental mark/sweep. 2) Remove scopes that will now become redundant (i.e. SweepAndCompact, UnifiedMarkingStep, etc.) The new scopes are no longer aligned with the existing telemetry code (gc_metric.html) in blink. Bug: chromium:1056170 Change-Id: I510269e24172f411b2a98c0a0a250a6e9fe58841 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2563882 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71480}
-
- 24 Nov, 2020 1 commit
-
-
Michael Lippautz authored
Exposes an opaque handle for uniformly (cppgc and V8) referring to an instance of a heap. Exposes a set of raw write barriers for advances embedders through subtle::HeapConsistency which is a mirror into write barrier internals. The following barriers are exposed: - DijkstraWriteBarrier: Regular Dijkstra-style write barrier (add to wavefront); - DijkstraWriteBarrierRange: Same as DijkstraWriteBarrier but operating on a range of slots that are composite (inlined) objects; - SteeleWriteBarrier: Regular Steele-style write barrier (retreating wavefront); Change-Id: Ib5ac280204686bf887690f72df1cdb506ea6ef70 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2554601Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71381}
-
- 20 Nov, 2020 1 commit
-
-
Omer Katz authored
This reverts commit 64bf4c53. Reason for revert: fix in patchset 2 Original change's description: > Revert "cppgc: Use tracing scopes" > > This reverts commit 548fe208. > > Reason for revert: Issues on Mac64: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31710 > > Original change's description: > > cppgc: Use tracing scopes > > > > The scopes themselves mostly have the same coverage as current scopes in > > blink. A few exception due to encapsulation exist and are highlighted as > > comments on the CL. > > > > Bug: chromium:1056170 > > Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 > > 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@{#71285} > > TBR=ulan@chromium.org,mlippautz@chromium.org,omerkatz@chromium.org > > Change-Id: I20dce9309dcaeff6ea61bdc51df3a2f62c2a103f > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1056170 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550782 > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71289} TBR=ulan@chromium.org,mlippautz@chromium.org,clemensb@chromium.org,omerkatz@chromium.org # Not skipping CQ checks because this is a reland. Bug: chromium:1056170 Change-Id: I9c57cdb3b0d310366cdf3e6fbcd1254fdc363163 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550666 Auto-Submit: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71305}
-
- 19 Nov, 2020 3 commits
-
-
Clemens Backes authored
This reverts commit 548fe208. Reason for revert: Issues on Mac64: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31710 Original change's description: > cppgc: Use tracing scopes > > The scopes themselves mostly have the same coverage as current scopes in > blink. A few exception due to encapsulation exist and are highlighted as > comments on the CL. > > Bug: chromium:1056170 > Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 > 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@{#71285} TBR=ulan@chromium.org,mlippautz@chromium.org,omerkatz@chromium.org Change-Id: I20dce9309dcaeff6ea61bdc51df3a2f62c2a103f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550782Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71289}
-
Omer Katz authored
The scopes themselves mostly have the same coverage as current scopes in blink. A few exception due to encapsulation exist and are highlighted as comments on the CL. Bug: chromium:1056170 Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 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@{#71285}
-
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 4 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}
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I697a33f51618c0b7b3b60a9a2abcb7bf4ab1d033 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491032 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70709}
-
Omer Katz authored
This CL adds TraceWeakContainer and VisitWeakContainer to the Visitor api. It also introduces the weak_container_worklist_ used to force re-tracing of weak containers that are reachable from stack. Bug: chromium:1056170 Change-Id: I4ba75bd64939b8df9ece7422828a5ac647b03fd1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491022 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70708}
-
- 19 Oct, 2020 1 commit
-
-
Michael Lippautz authored
Change-Id: Ie0b3a41e4248fb831d76ac47417cd8cb3a1e23f9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2482823 Commit-Queue: Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70596}
-
- 15 Oct, 2020 1 commit
-
-
Omer Katz authored
Cppgc exposes EphemeronPair that contains a WeakMember key and a Member value and can be used to denote ephemeron semantics in the standalone library. Tracing EphemeronPairs goes through TraceEphemeron that is exposed on the api for the blink usecase. Bug: chromium:1056170 Change-Id: I9fbaa284fa2034248cdf36ea8b0cd5be6a55f676 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467842 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70525}
-
- 09 Oct, 2020 2 commits
-
-
Omer Katz authored
Tracing JSMembers uses the bailout mechanism. The bailout is implemented as a dynamic mechanism named DeferTraceToMutatorThreadIfConcurrent that is called from relevant Trace methods. Bug: chromium:1056170 Change-Id: I90e6feae25c4c832be256693f9e44a963a6794b7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2426613 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#70429}
-
Michael Lippautz authored
Adds a cross-thread reference for strongly and weakly retaining objects on a thread other than the thread that owns the object. The intended use of the reference is by setting it up on the originating thread, holding the object alive from another thread, and ultimately accessing the object again on the originating thread. The reference has known caveats: - It's unsafe to use when the heap may terminate; - It's unsafe to transitively reach through the graph because of compaction; Change-Id: I84fbdde69a099eb54af5b93c34e2169915b17e64 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2436449 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#70428}
-
- 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}
-
- 06 Oct, 2020 2 commits
-
-
Omer Katz authored
This CL introduces concurrent marking to the cppgc library. The CL includes: (*) Split MarkingState to mutator thread and concurrent thread. (*) Split MarkingVisitor to mutator thread and concurrent thread. (*) Introduce ConcurrentMarker for managing concurrent marking. (*) Update unified heap to support concurrent marking as well. See slides 13 and 14 in the following link for class hierarchies: https://docs.google.com/presentation/d/1uDiEjJ-f1VziBKmYcvpw2gglP47M53bwj1L-P__l9QY/ Bug: chromium:1056170 Change-Id: I6530c2b21613011a612773d36fbf37416c23c5e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2424348 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@{#70352}
-
Omer Katz authored
This CL fixes 2 issues: 1) Objects should be unmarked when pushed to in-construction objects worklist by the write barrier. Otherwise tracing will bailout on them. 2) When finalizing with stack, in-construction objects may still be unmarked. Bug: v8:10989 Change-Id: I60707c70a221df59172596ab06ebf6a087270595 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2450014Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70343}
-
- 02 Oct, 2020 1 commit
-
-
Omer Katz authored
In construction objects don't have anything to sync with on the allocation side since they weren't marked as fully constructed yet. This could mean the initialization of the marking bit on the mutator thread and setting the mark bit on a concurrent thread could race (potentially resulting in losing the mark bit when the gc info index overwrites it). This CL fixes this issue by using a set of in construction objects. In construction objects are no longer marked. Instead they are pushed to the set and the heap object header is marked when they are popped from the worklist. Since the set avoids duplicates, this allows us to both avoid worklist explosion (due to pushing the same in construction object multiple times) and avoid the data race on the mark bit. This CL uses an unordered_set to record objects. Synchronization uses a lock, which could be costly but is not expected to be obtained often. Bug: chromium:1056170 Change-Id: I366b59f476c166ff06e15b280df9e846034cc6cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2437388 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70282}
-
- 01 Oct, 2020 1 commit
-
-
Michael Lippautz authored
For cross-thread handling we require the atomic marking pause to provide an atomically consistent view of markbits and weak references. This is ensured by locking the whole atomic pause from entering to weak processing. This CL move ProcessWeakness() into FinishMarking() which allows to nicely scope the upcomming lock from EnterAtomicPause() to LeaveAtomicPause(). The alternative is requiring the caller to ensure proper locking which is harder than ensuring that the Marker is consistent. Bug: chromium:1056170 Change-Id: Ib6028a0d76fcf9422c4a0d422fec3d568f106bf2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2442620 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70259}
-
- 28 Sep, 2020 2 commits
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: I2f62c74c3e435e05fd9e313af2f15925583872ab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2423716 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70153}
-
Omer Katz authored
This reverts commit 2221f090. Reason for revert: fix in patchset 2 Original change's description: > Revert "cppgc: Provide jobs support through DefaultPlatform and TestPlatform" > > This reverts commit 22c0fc8f. > > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20gcc/8712? > > Original change's description: > > cppgc: Provide jobs support through DefaultPlatform and TestPlatform > > > > This CL extends cppgc::DefaultPlatform and TestPlatform to emulate > > jobs using std::thread and v8::base::Thread respectively. > > Jobs using these platform do not yield unless the job as been > > cancelled. Additionally, the job priority is ignored. > > > > Bug: chromium:1056170 > > Change-Id: I72db1eef410d2be3d3e5ea7d4ece9e5584a451f2 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2416378 > > 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@{#70139} > > TBR=mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org > > Change-Id: Ic29235e3ab78a1b515a5b14b808e116a1ccffc0f > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1056170 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2432087 > Reviewed-by: Francis McCabe <fgm@chromium.org> > Commit-Queue: Francis McCabe <fgm@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70142} # Not skipping CQ checks because this is a reland. Bug: chromium:1056170 Change-Id: Iaa8312da759ab97f646a9fb6144462a115393b5f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2431666Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70150}
-
- 25 Sep, 2020 2 commits
-
-
Francis McCabe authored
This reverts commit 22c0fc8f. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20gcc/8712? Original change's description: > cppgc: Provide jobs support through DefaultPlatform and TestPlatform > > This CL extends cppgc::DefaultPlatform and TestPlatform to emulate > jobs using std::thread and v8::base::Thread respectively. > Jobs using these platform do not yield unless the job as been > cancelled. Additionally, the job priority is ignored. > > Bug: chromium:1056170 > Change-Id: I72db1eef410d2be3d3e5ea7d4ece9e5584a451f2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2416378 > 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@{#70139} TBR=mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: Ic29235e3ab78a1b515a5b14b808e116a1ccffc0f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2432087Reviewed-by:
Francis McCabe <fgm@chromium.org> Commit-Queue: Francis McCabe <fgm@chromium.org> Cr-Commit-Position: refs/heads/master@{#70142}
-
Omer Katz authored
This CL extends cppgc::DefaultPlatform and TestPlatform to emulate jobs using std::thread and v8::base::Thread respectively. Jobs using these platform do not yield unless the job as been cancelled. Additionally, the job priority is ignored. Bug: chromium:1056170 Change-Id: I72db1eef410d2be3d3e5ea7d4ece9e5584a451f2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2416378 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@{#70139}
-
- 23 Sep, 2020 1 commit
-
-
Omer Katz authored
ProcessWorklistsWithDeadline now takes deadlines instead of durations. Bug: chromium:1131203 Change-Id: Ie346334cfb043567836262614958282de078a1dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2424129 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70084}
-
- 17 Sep, 2020 1 commit
-
-
Omer Katz authored
For the standalone library, some platform implementations might not support non-nested tasks. We can still offer incremental marking in such cases using regular tasks and without assuming an empty stack. (cppgc's default platform e.g. doesn't support non-nested tasks.) This CL also updates GCInvoker to not trigger an incremental GC if we won't be able to finalize it. That makes finalizing through an non-nested incremental task safe. Bug: chromium:1056170 Change-Id: I85f0c9f2efe643cb87dd65d80417eea0d6ee5d52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2414217 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#69971}
-
- 09 Sep, 2020 1 commit
-
-
Omer Katz authored
This CL migrates cppgc to use Ulan's new worklist implementation. Since there is no central segments array anymore, we cannot rely on getting the same view (now renamed to Local) given the same task id. To avoid creating many short lived segments (e.g. for write barriers) marking state now holds local views for all worklists and provides access to them. Bug: chromium:1056170 Change-Id: Id19fe1196b79ed251810e91074046998dc2a9177 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390771 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#69767}
-
- 28 Aug, 2020 1 commit
-
-
Omer Katz authored
Schedule is simpler compared to the schedule in blink since it now returns deadlines based on marked bytes instead of time. If marking is ahead of schedule, return the minimum step size. Otherwise, set step size to catch up to schedule (ignoring the time passed while performing the step). No more default initial step size (needed in blink since marking speed was unknown). If estimated schedule is exceeded (marking takes longer than 500ms), the steps will try to mark all remaining objects but would still be capped by the maximum step duration of 2ms. Bug: chromium:1056170 Change-Id: I09857db161c621a12d064f9c8c21b646c34f9d71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375200 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#69602}
-