- 26 Nov, 2020 2 commits
-
-
Santiago Aboy Solanes authored
Scopes in V8 are used to guarantee one or more properties during its lifetimes. If a scope is not named e.g MyClassScope(args) instead of MyClassScope scope(args) it will get created and automatically destroyed and therefore, being useless as a scope. This CL would produce a compiling warning when that happens to ward off this developer error. Follow-up to ccrev.com/2552415 in which it was introduced and implemented for Guard classes. Change-Id: Ifa0fb89cc3d9bdcdee0fd8150a2618af5ef45cbf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2555001 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#71425}
-
Omer Katz authored
Both sample are essentially the same up to string constants since cppgc's default platform started using libplatform. The only diff between the sample is whether we call v8::V8::IntializePlatform or cppgc::InitializeProcess. Drive-by: replace CPPGC_BUILD_IN_V8 with CPPGC_IS_STANDALONE which is more descriptive. Bug: chromium:1056170 Change-Id: I8fdeb59c3345af77f1bccd8b93255ab39b4d3181 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2557516 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71421}
-
- 25 Nov, 2020 1 commit
-
-
Michael Lippautz authored
Refactor write barriers and split calls, as e.g. DijkstraWriteBarrier also contained logic for recording slots (cards) for the young generation. The new API exposes the following: - GetWriteBarrierType(): Retrieving the type of barrier that must be emitted; - DijkstraWriteBarrier(), DijkstraWriteBarrierRange(): Dijkstra-style write barriers; - SteeleWriteBarrier(): Steele-style write barrier; - GenerationalBarrier(): Barrier for recording slots when using multiple generations; Compilers running with -O3 optimize the DijkstraWriteBarrierPolicy down to the same instructions as before the split. Change-Id: If68839cc6357b2f568986c9ce8ca753b1e96a70a Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2557514 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@{#71407}
-
- 24 Nov, 2020 2 commits
-
-
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}
-
Omer Katz authored
The CPPGC_BUILD_IN_V8 define (used for tracing) isn't propagated from v8_base_without_compiler to cppgc_base, which breaks build with perfetto. Instead use a gn args to specify standalone builds (defaulted to false) and use that to choose the right tracing implementation. Bug: chromium:1056170 Change-Id: I70bce819d45fb133b6f932a50a5d027e39f3e5b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2555007 Auto-Submit: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71356}
-
- 21 Nov, 2020 1 commit
-
-
Milad Fa authored
Without the cast, gcc might throw the following error during compilation: error: enumeral mismatch in conditional expression: 'cppgc::internal::StatsCollector::ScopeId' vs 'cppgc::internal::StatsCollector::ConcurrentScopeId' Change-Id: I95e230310a0cbdc775d63657b8c407a8392a57e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2551104Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#71325}
-
- 20 Nov, 2020 2 commits
-
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I53e0e45045282c1fd217af34ff31b7e6411624b1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2552508 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71316}
-
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 4 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}
-
Omer Katz authored
This is required for enabling scopes such that NotifySweepingCompleted is not called from within a scope. Bug: chromium:1056170 Change-Id: Ia66aa4de8c22bfa7dfe1e02ee1e0d3ad088f7bf6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2549761Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71282}
-
- 17 Nov, 2020 1 commit
-
-
Michael Lippautz authored
Allows embedders to allocate C++ objects on the internal managed C++ heap. Bug: chromium:1056170 Change-Id: Ibd81d0fc915478a81f14e8ab12a631e442790f04 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2536642Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-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@{#71225}
-
- 16 Nov, 2020 1 commit
-
-
Omer Katz authored
Ports updates to weak container handling in blink performed in [1]. These changes were needed to resolve timeouts for android. See [1] for more details. [1] https://chromium-review.googlesource.com/c/chromium/src/+/2516363 Bug: chromium:1056170 Change-Id: I2b2c451d494438a37886a3c2bc73481bc9228664 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2538211 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71202}
-
- 30 Oct, 2020 1 commit
-
-
Etienne Pierre-doray authored
IsCompleted is backwards. For a more consistent api, the function is renamed IsActive and logic is flipped. Following up on https://chromium-review.googlesource.com/c/v8/v8/+/2461840 The intend is to make the distinction between IsActive and IsValid obvious. Change-Id: Iaf00b9f6ffa8f1efe93ae29f09899737ef20f04d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2510969Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#70901}
-
- 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}
-
- 21 Oct, 2020 1 commit
-
-
Michael Lippautz authored
Follow the marker pattern where actual logic is moved into a dedicated state class and the visitors merely forward to that class. Change-Id: Id3c6b7414343da82759bdba3dbb8286adee44cf4 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2480502 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70680}
-
- 19 Oct, 2020 2 commits
-
-
Etienne Pierre-doray authored
IsRunning is the v8 equivalent of operator bool, but is confusing with IsCompleted. IsValid (to match base:: operator bool) should be more clear. Change-Id: I2529bea21c7cb7613bd5057c66715fb5ea450396 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2461840Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#70625}
-
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}
-
- 14 Oct, 2020 2 commits
-
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: Ib03a09db010f3ad06701520fc39e7e83055dbb9e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467855 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70515}
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I65a2b38c85a93ac2822cb7d2b7ac4bd66540348a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2468996 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70498}
-
- 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 2 commits
-
-
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}
-
Michael Lippautz authored
Adds NameProvider to allow specifying names of objects. The corresponding internal NameTrait is registered with the GCInfo object. Use name infrastructure to provide a hint on encountering an unmarked object in the marking verifier. Bug: chromium:1056170 Change-Id: I95bb290660f5905500f861bd5cc85148a1b47184 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2454087 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@{#70400}
-
- 07 Oct, 2020 1 commit
-
-
Omer Katz authored
This CL aligns the library implementation with the blink implementation: (*) Concurrent marking increases job priority if no concurrent progress is made in the last 50% of the expected marking duration. (*) Concurrent sweeping increases job priority when calling FinishIfRunning (the library equivalent of blink's CompleteSweep). Bug: chromium:1056170 Change-Id: Ice275cb90a7dd76bf4125f4338d9d80e5f576c58 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2431572 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70375}
-
- 06 Oct, 2020 4 commits
-
-
Etienne Pierre-doray authored
This is useful for wasm instead of keeping around a list of handles. Change-Id: I4ef970ba191a66303c577bbe8e6ab1327aad2e24 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2451209Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#70353}
-
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
To support compaction of backing stores in blink, we need to distinguish custom spaces holding backing stores from other custom spaces. Custom space compactablity is explicitly declared as an enum value and propagated to BaseSpace as a bool flag. Note that even if/when general compaction is implemented/enabled for normal pages we will still need such a marking for supporting non-compactable custom spaces. Bug: v8:10990 Change-Id: I165a0268ded121e91399834a4091e88e57f2565c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2449973 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70345}
-
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 3 commits
-
-
Omer Katz authored
This resolves several races identified by concurrent marking tests. These include: (*) Several instances of not using atomic accesses. (*) Synchronizing page on page creation. Bug: chromium:1056170 Change-Id: I4a32a44b93a6995a11e3cc75c9446fb8860ae780 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2423717 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70287}
-
Omer Katz authored
We clear during sweep so that we are guaranteed the in-construction bit of newly allocated objects is always 0. The lock sweeping uses for synchronization assures no data races between clearing and concurrent marking. The only exception to that is debug builds that zap on sweep and clear on allocation. This makes it so that dangling references will most likely crash in debug builds. Bug: chromium:1056170 Change-Id: I12597ef76629ec50c6bfc39dc21b68243c4160ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2438530 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70283}
-
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 1 commit
-
-
Milad Fa authored
Fixes the following compilation error: 'atomic_uint8_t' in namespace 'std' does not name a type Change-Id: Ie231b544cafc694271f50f4841b823e8cff3ec1d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2434390 Commit-Queue: Milad Farazmand <mfarazma@redhat.com> Reviewed-by:
Junliang Yan <junyan@redhat.com> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#70165}
-