- 07 Jul, 2020 1 commit
-
-
Michael Lippautz authored
- Adds JSVisitor that is used for unified heap marking. - Adds JSMember as supported reference type that also encapsulates a write barrier in future. JSMember is a replacement for TracedReference which can be deprecated with EmbedderHeapTracer once the library is used to handle unified heap collections. The dispatch for v8::JSMember on cppgc::Visitor is provided through a specialization of TraceTrait. Bug: chromium:1056170 Change-Id: I60d976ae66db3e5fa2e690a21627bdcb8c6871af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2284488Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-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@{#68716}
-
- 02 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Split off ConservativeMarkingVisitor from MarkingVisitor. After this change, MarkingVisitor and ConservativeMarkingVisitor are types that are instantiated with Marking and merely forward to MarkingState accrodingly. The two marking-related visitors can be passed along as interface types cppgc::Visitor and ConservativeTracingVisitor, respectively. Change-Id: Iad103dc3053c61d1a104a8802edd420d21cdf935 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270538 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: 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@{#68661}
-
- 19 Jun, 2020 1 commit
-
-
Michael Lippautz authored
This is a reland of e0c1a349 The issue was passing SentinelPointer (== +1) through T*. The fix is disabling cfi unrelated cast diagnostic for the bottlenecks (Get()). This means that nullptr is treated the same as kSentinelPointer. The alternative would be a DCHECK that Get() does not return kSentinelPointer and adjusting all Member and Persistent logic that uses Get() to work on void*. This is quite intrusive as it involves Swap(), heterogeneous assignments, comparisons, etc. Original change's description: > cppgc: Properly clear (Weak)Peristent and WeakMember pointers > > The CL addresses two issues with (Weak)Persistent and WeakMember: > 1. (Weak)Persistent pointers are cleared on heap teardown. Before this > CL the pointers would contain stale values which could lead to UAF. > 2. WeakPersistent and WeakMember are cleared using a combination of > internal clearing methods and mutable fields which avoids the use > of const_cast<>. > > Bug: chromium:1056170 > Change-Id: Ibf2b0f0856771b4f6906608cde13a6d43ebf81f3 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2248190 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68394} Bug: chromium:1056170 Change-Id: I3d74b43464c2973df1956f51b1419d755dd9f519 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2250240Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68426}
-
- 17 Jun, 2020 2 commits
-
-
Zhi An Ng authored
This reverts commit e0c1a349. Reason for revert: Fails on Linux 64 cfi https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20cfi/25283? TBR=omerkatz@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,bikineev@chromium.org Change-Id: I2b208c4019979735925bff5e0551291fae6a14d6 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2250320Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#68396}
-
Michael Lippautz authored
The CL addresses two issues with (Weak)Persistent and WeakMember: 1. (Weak)Persistent pointers are cleared on heap teardown. Before this CL the pointers would contain stale values which could lead to UAF. 2. WeakPersistent and WeakMember are cleared using a combination of internal clearing methods and mutable fields which avoids the use of const_cast<>. Bug: chromium:1056170 Change-Id: Ibf2b0f0856771b4f6906608cde13a6d43ebf81f3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2248190Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68394}
-
- 08 Jun, 2020 1 commit
-
-
Michael Lippautz authored
Document: - Visitor Bug: chromium:1056170 Change-Id: Icc0037befa73f043fcbf14ff4ff89be8b8940ee4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235696Reviewed-by: Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68233}
-
- 15 May, 2020 1 commit
-
-
Michael Lippautz authored
This allows embedding objects in each other and recursively trace through them. Bug: chromium:1056170 Change-Id: I4e4ae4c1669109c01003cb6b69797cf271a74033 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2198977Reviewed-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@{#67841}
-
- 07 May, 2020 3 commits
-
-
Omer Katz authored
This reverts commit dc1af6a2. Reason for revert: Diff in patchset 2 Original change's description: > Revert "cppgc: Initial marking loop" > > This reverts commit fb9a19fe. > > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028 > > Original change's description: > > cppgc: Initial marking loop > > > > This CL introduces: > > - Worklist > > - MarkingHandler to manage gc marking phase > > - Integration into CollectGarbage for atomic pause GC > > - MarkingVisitor for main thread marking > > > > Still missing from this CL: > > - Proper handling for stack scanning > > - Handling of previously not fully constructed objects > > > > Bug: chromium:1056170 > > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526 > > 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@{#67642} > > TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org > > Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1056170 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67643} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org,nicohartmann@chromium.org # Not skipping CQ checks because this is a reland. Bug: chromium:1056170 Change-Id: I54e963e2aeaaf16069bdcdb019c0ac65e28ef6e2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187733Reviewed-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@{#67654}
-
Nico Hartmann authored
This reverts commit fb9a19fe. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028 Original change's description: > cppgc: Initial marking loop > > This CL introduces: > - Worklist > - MarkingHandler to manage gc marking phase > - Integration into CollectGarbage for atomic pause GC > - MarkingVisitor for main thread marking > > Still missing from this CL: > - Proper handling for stack scanning > - Handling of previously not fully constructed objects > > Bug: chromium:1056170 > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526 > 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@{#67642} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#67643}
-
Omer Katz authored
This CL introduces: - Worklist - MarkingHandler to manage gc marking phase - Integration into CollectGarbage for atomic pause GC - MarkingVisitor for main thread marking Still missing from this CL: - Proper handling for stack scanning - Handling of previously not fully constructed objects Bug: chromium:1056170 Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526 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@{#67642}
-
- 21 Apr, 2020 1 commit
-
-
Michael Lippautz authored
- Fixes includes to be relative to include/ which allows embedders to just add V8's include directory to get started. - Adds public target for the library as "cppgc". Bug: chromium:1056170 Change-Id: Iec9b644e20016a5d7281275b739821a050fd2540 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2157366Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67278}
-
- 16 Apr, 2020 1 commit
-
-
Michael Lippautz authored
This adds support for custom weak callbacks through static callbacks and instance methods. Bug: chromium:1056170 Change-Id: Ie4bd32539e0d933b192f07edb2d45e0070c2128d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2148784 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@{#67167}
-
- 15 Apr, 2020 1 commit
-
-
Anton Bikineev authored
CrossThreadPersistent and friends are the followup. Bug: chromium:1056170 Change-Id: Ide910062d80952da73b922398c281162b1861f47 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2144957 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by: 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@{#67153}
-
- 14 Apr, 2020 2 commits
-
-
Anton Bikineev authored
A few notes: 1) Oilpan is a generic library, meaning that it can work with arbitrary user types. The library is split in type-aware (include/) and type-erased (src/) parts. The former comprises a lot of code that still needs to be defended with dchecks; 2) Macros are prefixed with CPPGC_, so that they don't clash in the user code with similar macros from other libraries; 3) The macros simply forward requests to V8 so that dcheck handlers can be configured uniformly; 4) The CL doesn't contain CHECK_EQ and friends, but they can be added later if needed. Bug: chromium:1056170 Change-Id: I68e6f663247705233eaf030384164d81e53071e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2148774 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by: 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@{#67129}
-
Michael Lippautz authored
Provides the infrastructure to register weak callbacks for WeakMember<T> through visitor. The WeakCallbackInfo broker is used to query objects for liveness. In a future CL the same broker object is passed to custom weak callbacks. Change-Id: I8b5a66354e0e457521989d40ae64a9558c339503 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2142265 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@{#67109}
-
- 07 Apr, 2020 1 commit
-
-
Michael Lippautz authored
This CL adds the necessary traits to dispatch from Member through a visitor implementation for GarabgeCollected and GarbageCollectedMixin. Bug: chromium:1056170 Change-Id: I12680335044aaa842639fb5e8f9a3ac61587f51a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2138431Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67041}
-