- 12 May, 2022 1 commit
-
-
Michael Lippautz authored
This is a reland of commit 25e32252 Original change's description: > Reland "[heap] Refactor atomic marking phase" > > This is a reland of commit a3f66927 > > The reland addresses a few CHECKs that were too agressive and also > properly adjusts Oilpan's marking configurations depending on V8's > flags. > > Original change's description: > > [heap] Refactor atomic marking phase > > > > The atomic marking phase was organized in many distinct smaller > > phases. In particular, before http://crrev.com/c/3584115 the marking > > phase split into two large separate phases. > > > > This CL reorganizes marking into two phases that perform regular V8 > > heap marking, Oilpan, and ephemerons: > > - A parallel phase that likely drains all marking worklists; > > - A single-threaded final phase to catch any left overs; > > > > This avoids artificial splitting in phases and also avoids repeated > > starting and joining of jobs. > > > > Change-Id: I5cccfc5777837d9ece10d8f4925781bf2d07d9da > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602507 > > Reviewed-by: Omer Katz <omerkatz@chromium.org> > > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#80265} > > Change-Id: I26648da361b92d787c173aa9d390100ce8958728 > Bug: chromium:1320896 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616519 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80301} Bug: chromium:1320896 Change-Id: I7ebb3bde9f0d3497f46c728bfbc380c1bd4bc021 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3641167Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80485}
-
- 02 May, 2022 2 commits
-
-
Leszek Swirski authored
This reverts commit 25e32252. Reason for revert: Suspect for roll failure: https://ci.chromium.org/ui/p/chromium/builders/try/android_optional_gpu_tests_rel/98554/overview Original change's description: > Reland "[heap] Refactor atomic marking phase" > > This is a reland of commit a3f66927 > > The reland addresses a few CHECKs that were too agressive and also > properly adjusts Oilpan's marking configurations depending on V8's > flags. > > Original change's description: > > [heap] Refactor atomic marking phase > > > > The atomic marking phase was organized in many distinct smaller > > phases. In particular, before http://crrev.com/c/3584115 the marking > > phase split into two large separate phases. > > > > This CL reorganizes marking into two phases that perform regular V8 > > heap marking, Oilpan, and ephemerons: > > - A parallel phase that likely drains all marking worklists; > > - A single-threaded final phase to catch any left overs; > > > > This avoids artificial splitting in phases and also avoids repeated > > starting and joining of jobs. > > > > Change-Id: I5cccfc5777837d9ece10d8f4925781bf2d07d9da > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602507 > > Reviewed-by: Omer Katz <omerkatz@chromium.org> > > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#80265} > > Change-Id: I26648da361b92d787c173aa9d390100ce8958728 > Bug: chromium:1320896 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616519 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80301} Bug: chromium:1320896 Change-Id: I01742f25d54de8e4e22fefe87ce61ba295950baa No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3620286 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#80311}
-
Michael Lippautz authored
This is a reland of commit a3f66927 The reland addresses a few CHECKs that were too agressive and also properly adjusts Oilpan's marking configurations depending on V8's flags. Original change's description: > [heap] Refactor atomic marking phase > > The atomic marking phase was organized in many distinct smaller > phases. In particular, before http://crrev.com/c/3584115 the marking > phase split into two large separate phases. > > This CL reorganizes marking into two phases that perform regular V8 > heap marking, Oilpan, and ephemerons: > - A parallel phase that likely drains all marking worklists; > - A single-threaded final phase to catch any left overs; > > This avoids artificial splitting in phases and also avoids repeated > starting and joining of jobs. > > Change-Id: I5cccfc5777837d9ece10d8f4925781bf2d07d9da > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602507 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80265} Change-Id: I26648da361b92d787c173aa9d390100ce8958728 Bug: chromium:1320896 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616519 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80301}
-
- 28 Apr, 2022 2 commits
-
-
Adam Klein authored
This reverts commit a3f66927. Reason for revert: test failures on TSAN/no-concurrent-marking bot: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/8549/overview Original change's description: > [heap] Refactor atomic marking phase > > The atomic marking phase was organized in many distinct smaller > phases. In particular, before http://crrev.com/c/3584115 the marking > phase split into two large separate phases. > > This CL reorganizes marking into two phases that perform regular V8 > heap marking, Oilpan, and ephemerons: > - A parallel phase that likely drains all marking worklists; > - A single-threaded final phase to catch any left overs; > > This avoids artificial splitting in phases and also avoids repeated > starting and joining of jobs. > > Change-Id: I5cccfc5777837d9ece10d8f4925781bf2d07d9da > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602507 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80265} Change-Id: I4838e9316bd30f8a0b78fa6a27820d3457e1e579 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3614972 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/main@{#80267}
-
Michael Lippautz authored
The atomic marking phase was organized in many distinct smaller phases. In particular, before http://crrev.com/c/3584115 the marking phase split into two large separate phases. This CL reorganizes marking into two phases that perform regular V8 heap marking, Oilpan, and ephemerons: - A parallel phase that likely drains all marking worklists; - A single-threaded final phase to catch any left overs; This avoids artificial splitting in phases and also avoids repeated starting and joining of jobs. Change-Id: I5cccfc5777837d9ece10d8f4925781bf2d07d9da Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602507Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80265}
-
- 11 Apr, 2022 2 commits
-
-
Michael Lippautz authored
This is a reland of commit 1f0d7d20 The fix merges concurrent marking tasks when marking in the atomic pause. Without the fix, Oilpan markers would continue running concurrently, possibly discovering new V8 objects. This violates the assumption that the final transitive closure runs on a single thread. Original change's description: > cppgc-js: Concurrently process v8::TracedReference > > Adds concurrent marking for reaching through v8::TracedReference. > Before this CL, a v8::TracedReference would always be processed on the > main thread by pushing a callback for each encountered reference. > > This CL now wires up concurrent handling for such references. In particular: > - Global handles are already marked as well and not repurposed during > the same GC cycle. > - Since global handles are not repurposed, it is enough to > double-deref to the V8 object, checking for possible null pointers. > - The bitmap for global handle flags is mostly non-atomic, with the > markbit being the exception. > - Finally, all state is wired up in CppHeap. Concurrent markers keep > their own local worklist while the mutator marker directly pushes to > the worklist owned by V8. > > Bug: v8:12600 > Change-Id: Ia67dbd18a57dbcccf4dfb9ccfdb9ee438d27fe71 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516255 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79736} Bug: v8:12600 Change-Id: I8545041b2c7b3daf7ecea7e3a100e27534e9b8b5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571887Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79919}
-
Michael Lippautz authored
Join instead of cancel to make use of the the main thread. Also make the Join() call explicit instead of implicitly finishing concurrency on advancing tracing form the main thread. Bug: v8:12600 Change-Id: I60d3e82bfc2e8a3ccc2dda761a5d3eb3ac7694d1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3578855Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79910}
-
- 08 Apr, 2022 2 commits
-
-
Michael Lippautz authored
Change-Id: Ifb69e0d12359b7781665729d3abf91db4c1505bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579361 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79893}
-
Michael Lippautz authored
Trivial changes from https://crrev.com/c/3571887. Bug: v8:12600 Change-Id: I0a6f36d32f72a6c3817a4390645ccf5a690c5580 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579161Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79885}
-
- 05 Apr, 2022 1 commit
-
-
Leszek Swirski authored
This reverts commit 1f0d7d20. Reason for revert: Speculative revert for roll failures in https://chromium-review.googlesource.com/c/chromium/src/+/3569445 Original change's description: > cppgc-js: Concurrently process v8::TracedReference > > Adds concurrent marking for reaching through v8::TracedReference. > Before this CL, a v8::TracedReference would always be processed on the > main thread by pushing a callback for each encountered reference. > > This CL now wires up concurrent handling for such references. In particular: > - Global handles are already marked as well and not repurposed during > the same GC cycle. > - Since global handles are not repurposed, it is enough to > double-deref to the V8 object, checking for possible null pointers. > - The bitmap for global handle flags is mostly non-atomic, with the > markbit being the exception. > - Finally, all state is wired up in CppHeap. Concurrent markers keep > their own local worklist while the mutator marker directly pushes to > the worklist owned by V8. > > Bug: v8:12600 > Change-Id: Ia67dbd18a57dbcccf4dfb9ccfdb9ee438d27fe71 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516255 > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79736} Bug: v8:12600 Change-Id: I8a91dcd6880580207bf8d315b264edbe42a794e5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568474 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79778}
-
- 04 Apr, 2022 1 commit
-
-
Michael Lippautz authored
Adds concurrent marking for reaching through v8::TracedReference. Before this CL, a v8::TracedReference would always be processed on the main thread by pushing a callback for each encountered reference. This CL now wires up concurrent handling for such references. In particular: - Global handles are already marked as well and not repurposed during the same GC cycle. - Since global handles are not repurposed, it is enough to double-deref to the V8 object, checking for possible null pointers. - The bitmap for global handle flags is mostly non-atomic, with the markbit being the exception. - Finally, all state is wired up in CppHeap. Concurrent markers keep their own local worklist while the mutator marker directly pushes to the worklist owned by V8. Bug: v8:12600 Change-Id: Ia67dbd18a57dbcccf4dfb9ccfdb9ee438d27fe71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516255Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79736}
-
- 27 Dec, 2021 1 commit
-
-
Omer Katz authored
Included in this CL: (*) Introduce CppMarkingState that V8 should use to push references to Oilpan. CppMarkingState allocates its own Worklist::Locals to support concurrent updates from V8. (*) Split Oilpan MarkingWorklist object to form a base class used by CppMarkingState. (*) Remove MarkerFactory and split marking initialization. Marking worklists should already be initialized when V8 initializes visitors. For incremental marking, this requires splitting marking initialization and marking start. (*) Drive-by: Mark JSObject::IsApiWrapper and JSObject::IsDroppableApiWrapper as const. Bug: v8:12407 Change-Id: I35cc816343da86f69a68306204675720e9b3913f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3293410Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#78446}
-
- 09 Dec, 2021 1 commit
-
-
Omer Katz authored
Concurrent marking could still push object to the in construction worklist after it is emptied at the start of the atomic pause. Bug: v8:12479 Change-Id: I539e5857001c4689867a3de6adb11142f639cb5b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3327143Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#78327}
-
- 25 Nov, 2021 3 commits
-
-
Omer Katz authored
This is a reland of 6747144c Original change's description: > cppgc: Parallel marking in atomic pause > > Bug: v8:12424 > Change-Id: I0633e1bd8c890c14ce2c5519253a5e6eb7592f04 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3295580 > Commit-Queue: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78081} Bug: v8:12424 Change-Id: I66a030b4e66647a76bbe3d114785d3052358b403 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3301477Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#78092}
-
Nico Hartmann authored
This reverts commit 6747144c. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/Linux%20V8%20FYI%20Release%20(NVIDIA)/17679/test-results Original change's description: > cppgc: Parallel marking in atomic pause > > Bug: v8:12424 > Change-Id: I0633e1bd8c890c14ce2c5519253a5e6eb7592f04 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3295580 > Commit-Queue: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78081} Bug: v8:12424 Change-Id: I8cd6ad8bb72906329bf820a8c1df06e8fa8d89a2 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3301469 Owners-Override: Nico Hartmann <nicohartmann@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/main@{#78089}
-
Omer Katz authored
Bug: v8:12424 Change-Id: I0633e1bd8c890c14ce2c5519253a5e6eb7592f04 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3295580 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#78081}
-
- 07 Oct, 2021 1 commit
-
-
Michael Lippautz authored
In addition, trigger the observer only every ~256KiB to avoid excessive incremental marking steps on fragemented heaps that have to set up LABs repeatedly. Bug: v8:12285 Change-Id: Id3d85d2c3f96d9d914c731f998df827898e1863d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3208810 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77278}
-
- 29 Sep, 2021 1 commit
-
-
Michael Lippautz authored
During a final atomic pause CrossThreadPersistent handles need to be frozen after they have been marked to avoid any WeakCrossThreadPersistent handles creating new strong references (through their Lock() call) that would retain objects. Handles are frozen by acquiring a lock. Since this lock is also taking by other threads on WCTP::Lock() this can introduce jank. This CL improves the situation by delaying processing of CTP references until absolutely necessary, i.e., when we have otherwise no more objects to mark. Bug: chromium:1252743 Change-Id: I872f38c6d24d7955bea74fd59685abd3019b385e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3194253Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77139}
-
- 19 May, 2021 1 commit
-
-
Michael Lippautz authored
The barrier just re-added a black object to the worklist (making it gray) which results in double-accounting live bytes. Trace directly as the barrier is not widely used. Bug: chromium:1056170 Change-Id: I06a55c13f6e82652ad1939a12c4e23f3a3ebd3fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2904212 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@{#74668}
-
- 17 Feb, 2021 1 commit
-
-
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}
-
- 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}
-
- 10 Dec, 2020 1 commit
-
-
Omer Katz authored
Add fields to HeapOptions to denote on heap creation that the heap does not support incremental/concurrent marking/sweeping. This only applies to standalone heaps. When triggering a GC (either explicitly or by the heap growing heuristics), the given config is limited to not trigger unsupported marking/sweeping types. Bug: chromium:1156170 Change-Id: Id7b5cf82962e7c40920f942df9415d798e2b6686 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2581961 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71698}
-
- 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}
-
- 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 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}
-
- 09 Oct, 2020 1 commit
-
-
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}
-
- 06 Oct, 2020 1 commit
-
-
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}
-
- 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 2 commits
-
-
Omer Katz authored
Bug: chromium:1056170 Change-Id: Ibf561b663c74f9448139fd99945e5f4aea26419b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390776 Commit-Queue: 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@{#69774}
-
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}
-