- 21 Aug, 2020 1 commit
-
-
Ulan Degenbaev authored
This is a reland of 1dd7f3a9 Original change's description: > [heap] Add concurrent marking write barrier > > A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to > the marking barrier is set to a thread_local variable for a quick access. > > WriteBarrier::MarkingSlow fetches the thread_local variable and invokes > the write barrier if it is set. Otherwise, it invokes the main thread > heap()->marking_barrier(). > > Each marking barrier has its own local marking worklist that is > published during scavenge (for updating pointers) and at finalization > of incremental marking. > > Typed-slot recording does not work yet because it is not thread-safe. > It will be fixed in a subsequent CL. > > Bug: v8:10315 > Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809 > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69448} Bug: v8:10315 Change-Id: I155bb0aadd53a5333672fb085b33d8da86f3f336 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2364509Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69517}
-
- 20 Aug, 2020 1 commit
-
-
Omer Katz authored
This CL adds a bytes based deadline to draining of worklist. The time based deadline is also kept because: 1) Unified heap can't transition to bytes-based deadlines yet. 2) Unified heap with concurrent marking needs to flush v8 references which don't count as marked_bytes and can cause very long incremental pauses. Bug: chromium:1056170 Change-Id: I5ab57754e7ff0b5821f3acb76e1e6f59fc9d68b8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2299374Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#69506}
-
- 18 Aug, 2020 2 commits
-
-
Maya Lekova authored
This reverts commit 1dd7f3a9. Reason for revert: Breaks TSAN - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/32846? Original change's description: > [heap] Add concurrent marking write barrier > > A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to > the marking barrier is set to a thread_local variable for a quick access. > > WriteBarrier::MarkingSlow fetches the thread_local variable and invokes > the write barrier if it is set. Otherwise, it invokes the main thread > heap()->marking_barrier(). > > Each marking barrier has its own local marking worklist that is > published during scavenge (for updating pointers) and at finalization > of incremental marking. > > Typed-slot recording does not work yet because it is not thread-safe. > It will be fixed in a subsequent CL. > > Bug: v8:10315 > Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809 > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69448} TBR=ulan@chromium.org,dinfuehr@chromium.org Change-Id: I9719d565aaa313cd23f5e759dcef1246f475eb46 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10315 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362689Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#69451}
-
Ulan Degenbaev authored
A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to the marking barrier is set to a thread_local variable for a quick access. WriteBarrier::MarkingSlow fetches the thread_local variable and invokes the write barrier if it is set. Otherwise, it invokes the main thread heap()->marking_barrier(). Each marking barrier has its own local marking worklist that is published during scavenge (for updating pointers) and at finalization of incremental marking. Typed-slot recording does not work yet because it is not thread-safe. It will be fixed in a subsequent CL. Bug: v8:10315 Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69448}
-
- 11 Aug, 2020 1 commit
-
-
Ulan Degenbaev authored
This is the first step in refactoring Worklist to allow arbitrary number of local worklists with private segments: - Introduce MarkingWorklistImpl<> which will eventually replace (and will be renamed to) Worklist. - MarkingWorklistImpl<> owns the global pool of segments but does not keep track of private segments. - MarkingWorklistImpl<>::Local owns private segments and can be constructed dynamically on background threads. - Rename the existing MarkingWorklistsHolder to MarkingWorklists. - Rename the existing MarkingWorklists to MarkingWorklists::Local. - Rename the existing marking_workists_holder to marking_worklists. - Rename the existing marking_worklists to local_marking_worklists. Design doc: https://bit.ly/2XMtjLi Bug: v8:10315 Change-Id: I9da34883ad34f4572fccd40c51e51eaf50c617bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2343330Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69330}
-
- 07 Jul, 2020 1 commit
-
-
Ulan Degenbaev authored
This moves marking write barrier related functions from Heap and IncrementalMarking into a separate class: MarkingBarrier. Additionally, a new WriteBarrier class is added at the heap API level that dispatches to MarkingBarrier. Future CLs will move slots recording in MarkingBarrier and apply the same refactoring to the generational barrier. An instance of MarkingBarrier will be added to each LocalHeap and enable it to emit a write barrier from a background thread. Bug: v8:10315 Change-Id: Icc147b48563d88c85d99ead99b1e201f523721d0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2280083Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68703}
-
- 28 May, 2020 1 commit
-
-
Omer Katz authored
Bug: chromium:1082438,chromium:1083860 Change-Id: I8f0defe0db0e420e970311bcaf0aebb3ccebb4b3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2219928 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Auto-Submit: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68042}
-
- 26 May, 2020 2 commits
-
-
Dominik Inführ authored
With --stress-incremental-marking we want to start concurrent marking faster by also sweeping pages on incremental marking steps. Bug: v8:10315 Change-Id: Ie3fa04acc5e59a4b81c3351f4b522c78368bb1a6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2210247 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67968}
-
Dominik Inführ authored
Objects allocated on the background thread during incremental marking, need to be allocated black. This prevents concurrent marking to observe uninitialized objects. Bug: v8:10315 Change-Id: Ia4b05a2a72e4142c79b31a01cbf162a6599a18c0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196347 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67967}
-
- 15 May, 2020 1 commit
-
-
Dominik Inführ authored
Refactor Heap::FinalizeSweeping such that EnsureSweepingCompleted is executed in a safepoint. Bug: v8:10315 Change-Id: Iee09765ba5fd35e3e696b018bd616954d609ef72 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2204098Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67827}
-
- 12 May, 2020 2 commits
-
-
Shu-yu Guo authored
This reverts commit c25352f3. Reason for revert: Causing raytrace timeouts on TSAN: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/13089 https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/13090 https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/13091 Original change's description: > Reland "[heap] Remove sweeping state in incremental marking" > > This is a reland of 7f29c48e > > After fixing TSAN failures in https://crrev.com/c/2192661 and https://crrev.com/c/2193712, this CL and be relanded without changes. > > Original change's description: > > [heap] Remove sweeping state in incremental marking > > > > Remove the SWEEPING state from incremental marking. Sweeping is now > > always completed when starting incremental marking. Before this change > > there needed to be a safepoint each for starting marking and completing > > sweeping. Now both happens within a single safepoint. > > > > Bug: v8:10315 > > Change-Id: Iad2835554865f2de24376372affe9a98992d1fa0 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190419 > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#67678} > > Bug: v8:10315 > Change-Id: Ic949d125e72c4d17fd427d08d4b6f9056721eee9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196182 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67741} TBR=ulan@chromium.org,dinfuehr@chromium.org Change-Id: Ie529fd3bef13a28301f22876758d731e466d3939 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10315 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2197457Reviewed-by: Shu-yu Guo <syg@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#67761}
-
Dominik Inführ authored
This is a reland of 7f29c48e After fixing TSAN failures in https://crrev.com/c/2192661 and https://crrev.com/c/2193712, this CL and be relanded without changes. Original change's description: > [heap] Remove sweeping state in incremental marking > > Remove the SWEEPING state from incremental marking. Sweeping is now > always completed when starting incremental marking. Before this change > there needed to be a safepoint each for starting marking and completing > sweeping. Now both happens within a single safepoint. > > Bug: v8:10315 > Change-Id: Iad2835554865f2de24376372affe9a98992d1fa0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190419 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67678} Bug: v8:10315 Change-Id: Ic949d125e72c4d17fd427d08d4b6f9056721eee9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196182Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67741}
-
- 11 May, 2020 2 commits
-
-
Ulan Degenbaev authored
This replaces VisitMode with a set of option flags that allow skipping specific roots like unserializable, weak, global handles, etc. The advantage is that it is no longer coupled with the callers and does not know about different types of GCs and their phases. The CL is pure refactoring without behavior changes except for the heap verification where more roots are verified that before. Change-Id: I350b2ed14826e0efb75770111c6b28bb8d4d9845 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190420Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67704}
-
Dominik Inführ authored
This reverts commit 7f29c48e. Reason for revert: Causing TSAN failures on test bots. Original change's description: > [heap] Remove sweeping state in incremental marking > > Remove the SWEEPING state from incremental marking. Sweeping is now > always completed when starting incremental marking. Before this change > there needed to be a safepoint each for starting marking and completing > sweeping. Now both happens within a single safepoint. > > Bug: v8:10315 > Change-Id: Iad2835554865f2de24376372affe9a98992d1fa0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190419 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67678} TBR=ulan@chromium.org,dinfuehr@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:10315 Change-Id: I5e76990155cf7aeee3ecefe5e37f9028cb188a00 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2192658Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67699}
-
- 08 May, 2020 2 commits
-
-
Dominik Inführ authored
Remove the SWEEPING state from incremental marking. Sweeping is now always completed when starting incremental marking. Before this change there needed to be a safepoint each for starting marking and completing sweeping. Now both happens within a single safepoint. Bug: v8:10315 Change-Id: Iad2835554865f2de24376372affe9a98992d1fa0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190419Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67678}
-
Dominik Inführ authored
Background threads can now start incremental marking when necessary. In contrast to the main thread they always need to schedule a job and can't start incremental marking right away. Background threads also use a simpler heuristic for deciding whether to start incremental marking. Bug: v8:10315 Change-Id: I2b94e8273c8be860157fe9670797048ed1c5c3da Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2184149Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67675}
-
- 07 May, 2020 1 commit
-
-
Omer Katz authored
Bug: chromium:986235 Change-Id: If7c990dd143fd5331d264dcf2c5349525d1321b2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187731 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@{#67652}
-
- 05 May, 2020 1 commit
-
-
Dan Elphick authored
Also makes memory-chunk.h accessible from outside heap which allows removal of some heap-inl.h includes. Bug: v8:10473, v8:10496 Change-Id: Iec4fc5ce8ad201f6ee5fd924cc3cd935324429fc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172088 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67551}
-
- 04 May, 2020 1 commit
-
-
Michael Lippautz authored
The callback is useful to embedders to trigger various actions such as recomputing live set. Bug: chromium:1056170 Change-Id: I7d80b9b768a728e23303f945e416df97fd9b7805 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173358 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67532}
-
- 24 Apr, 2020 1 commit
-
-
Shu-yu Guo authored
The js_weak_refs worklist is currently not updated after scavenges, unlike other weak reference worklist. Bug: v8:8179, chromium:1073981 Change-Id: I48172606995253edb8a0c96f2b7e2dc34cd3d0d6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2163827 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67350}
-
- 20 Apr, 2020 3 commits
-
-
Ulan Degenbaev authored
This reverts commit ecc61b30. Reason for revert: I will reland with the flag disabled. Original change's description: > [heap] Add a flag for performing incremental marking on allocation > > The flag is true by default and passing > --noincremental-marking-on-allocation disables starting of incremental > marking on allocation and incremental marking steps on allocation. > > Change-Id: I4537e0eeaaf93fb713fcacd3860e29b98df441fc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154194 > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67228} TBR=ulan@chromium.org,hpayer@chromium.org,mlippautz@chromium.org Change-Id: I7dd847513d1628e7137d9e10cb5e9058781a9634 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154803Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67231}
-
Ulan Degenbaev authored
The flag is true by default and passing --noincremental-marking-on-allocation disables starting of incremental marking on allocation and incremental marking steps on allocation. Change-Id: I4537e0eeaaf93fb713fcacd3860e29b98df441fc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154194Reviewed-by: Hannes Payer <hpayer@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67228}
-
Sathya Gunasekaran authored
Previously, one single retained maps list was used across all contexts. When one context was disposed, this entire list of retained maps was disposed as well. This caused maps that were still alive to be disposed leading to deopts when such maps were embedded in code objects. This patch makes the list of retained maps be per context so we can dispose only the dead maps. Bug: v8:9684, v8:10431 Change-Id: I0a50f4f49c9f6d72367c62e950828a039220fdfc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2122016Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#67225}
-
- 06 Apr, 2020 1 commit
-
-
Dominik Inführ authored
Adds the PersistentHandles class, which serves as a container for handles that can be passed back and forth between threads. Allocation and deallocation of this class is thread-safe and the isolate tracks all PersistentHandles containers. Design doc: https://docs.google.com/document/d/17yKs-6apE2rGEag7tDsoyeRxg99c1dXyXQ2MfHe65tY/edit?usp=sharing Bug: v8:10315 Change-Id: I4b9c958c9a57d755ca68862197501f75274670fb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2128058 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67004}
-
- 20 Feb, 2020 2 commits
-
-
Michael Lippautz authored
Delaying marking requires tasks to be scheduled. Bug: chromium:1054398 Change-Id: Ib92a0f5541f0e37cbbabfb3dd8185b56680d0142 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2066977Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#66376}
-
Michael Lippautz authored
Bug: chromium:1054345 Change-Id: Ic26cacfff024fada079b72a0bd26a49dfd0ef709 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2064984 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66372}
-
- 18 Feb, 2020 2 commits
-
-
Michael Lippautz authored
The marking speed is computed from incremental marking steps reported. In case of embedder tracing, such steps should not include time spent processing embedder memory. Bug: chromium:1044630, chromium:1049084 Change-Id: Ie7b5af569b4114dd8dffd2d85eaf28ece9dfa18c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2062394 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@{#66316}
-
Michael Lippautz authored
V8 is capped by a maximum. Since the embedder step is computed from V8's speeds using concurrent marking it may be too aggressive. Cap the embedder step to the same maximum as V8 to workaround that issue. Bug: chromium:1044630 Change-Id: Idcd84cacf2f3fa4dd8df2a03aa3ae6ffb6cb36a6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2062393Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#66314}
-
- 10 Feb, 2020 1 commit
-
-
Michael Lippautz authored
When delaying finalization we considered the maximum of the current time to task and the recorded average. In case there's no recorded average the GC would consider the current time to task as estimate which is too aggresive as V8 may never get a task executed. Be fully conservative about recorded task times and bail out in such cases. Bug: chromium:1049957 Change-Id: Ibaac242f72459341a170af80e63fb2266f91b0eb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2043809 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#66196}
-
- 06 Feb, 2020 1 commit
-
-
Michael Lippautz authored
Instead of alternating V8 and embedder steps and trying to find a fixed point where both are empty, just run two phases and check whether both have been observed as empty individually. Bug: chromium:1044630, chromium:1049084 Change-Id: I7ffdca3086f1e7f772303272e370c4a6c1f83f24 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2041437 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66153}
-
- 05 Feb, 2020 1 commit
-
-
Michael Lippautz authored
Delay completing marking (and thus the atomic GC pause) during JS executions, increasing the chance to finalize the garbage collection from a task. This is beneficial as it avoids stack scanning which is expensive and can keep alive outdated objects in case of unified heap. Completing will be delayed at most by some overshoot factor (10%). In addition, the GC keeps the weighted average of previously recorded time to incremental marking task invocations and bails out if the task is expected to arrive too late. Reland: Do not schedule a delayed task when marking has already been finalized. This reverts commit 1775684e. Bug: chromium:1044630, v8:10178 Change-Id: Ic46e9504ce7c200bd1d37ee8d0190fb8727a3f96 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037436Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#66137}
-
- 04 Feb, 2020 3 commits
-
-
Michael Achenbach authored
This reverts commit 02e57873. Reason for revert: High flakiness and broken GPU builders. See: https://crbug.com/v8/10178 (speculative revert) Original change's description: > heap: Delay completing marking > > Delay completing marking (and thus the atomic GC pause) during JS > executions, increasing the chance to finalize the garbage collection > from a task. This is beneficial as it avoids stack scanning which is > expensive and can keep alive outdated objects in case of unified heap. > > Completing will be delayed at most by some overshoot factor (10%). > > In addition, the GC keeps the weighted average of previously recorded > time to incremental marking task invocations and bails out if the > task is expected to arrive too late. > > Bug: chromium:1044630 > Change-Id: I10e63e6aaa88d8488d4415f311016dce2b4e62a2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2030906 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66107} TBR=ulan@chromium.org,hpayer@chromium.org,mlippautz@chromium.org Change-Id: I0cd3f1189d0f83754350d5bdaaf82cb3c4d402c8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1044630, v8:10178 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037434Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#66120}
-
Michael Lippautz authored
When not being embedded, there's no need to try to share time with the embedder. Additionally, avoid too small step sizes. Bug: chromium:1044630, chromium:1048631 Change-Id: I227bfd120b5ce1976935d27c2140263f7364eb51 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2036085 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66115}
-
Michael Lippautz authored
Delay completing marking (and thus the atomic GC pause) during JS executions, increasing the chance to finalize the garbage collection from a task. This is beneficial as it avoids stack scanning which is expensive and can keep alive outdated objects in case of unified heap. Completing will be delayed at most by some overshoot factor (10%). In addition, the GC keeps the weighted average of previously recorded time to incremental marking task invocations and bails out if the task is expected to arrive too late. Bug: chromium:1044630 Change-Id: I10e63e6aaa88d8488d4415f311016dce2b4e62a2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2030906 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66107}
-
- 03 Feb, 2020 1 commit
-
-
Michael Lippautz authored
When the embedder integrates in V8's garbage collector the performance of the atomic phase is sensitive to how much embedder memory is found through marking the overall transitive closure. Before this patch, V8 would help out tracing the embedder's heap when making progress through tasks but not on allocations. In addition, V8 would complete the garbage collection when it has observed it's own marking worklists as empty 3 times (*). This can create performance cliffs when there's a lot of work still to be done on the embedder side. This patch adds helping steps on allocation that are proportional to the bytes that V8 would otherwise process, guaranteeing some progress as long as there's V8 allocations. This allows us to remove (*). Potential Tradeoffs: - More time spent in V8's garbage collection metrics as we slightly limit the chances for the embedder to mark objects through tasks. - Prolonged V8.execute time (JS execution) + Faster progress + Less memory + Smaller atomic pause time Change-Id: I160f063209f7e129b9c884206f833706b69dadc1 Bug: chromium:1044630 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2025371 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66091}
-
- 31 Jan, 2020 1 commit
-
-
Michael Lippautz authored
The flag is unused. Bug: chromium:1044630 Change-Id: Ib499cdd559451c9f23c3c98b187755ef6748bffc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2030743 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66070}
-
- 24 Jan, 2020 1 commit
-
-
Dominik Inführ authored
When ArrayBufferExtensions are enabled, sweep the extensions outside of the GC pause concurrently to the application. The following GC will make sure that the previous concurrent sweep operation is finished. This CL introduces Heap::array_buffer_sweeper() that is both responsible for tracking all extensions but also for sweeping. Bug: v8:10064 Change-Id: I113cd625445a7d59ffb7a9de8b25a15a72b02b99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2010107Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65984}
-
- 19 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
This adds a new API function that can be customized by the embedder by providing a delegate that defines contexts to be measured and reports the results to JS. A memory measurement request is carried out as follows: 1) MeasureMemory(delegate) invocation enqueues a new request in MemoryMeasurement::received_ and schedules a delayed GC task. 2) At the start of the next GC (that is triggered either by the GC schedule or by the delayed task) each request in received_ moves to processing_. Per-context marking worklists are created for each native context that was selected by the delegates (using the ShouldMeasure predicate). 3) At the end of the GC the sizes of the native contexts are recorded for each request in processing_. The requests move to the done_ list and result reporting task is scheduled. 4) When the result reporting task runs it invokes the MeasurementComplete function of each delegate in done_. Bug: chromium:973627 Change-Id: I0254cae693c5b8fab7c85a9eca0a3a128210b6c4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1981493 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65856}
-
- 17 Jan, 2020 1 commit
-
-
Dominik Inführ authored
Split the linked list of array buffer extensions into two lists for young and old JSArrayBuffers. Process young extensions during the minor GC pause. When promoting JSArrayBuffers into the old gen, move the extension into the old linked list as well. Bug: v8:10064 Change-Id: I07275ffe7ba918c9b2d6d0648a6d1b59e4fa4891 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1997438 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65842}
-
- 16 Jan, 2020 1 commit
-
-
Hannes Payer authored
Change-Id: I6eb3c9c6ff25a58b2c7d0d233926514606e7ff5a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1995395 Commit-Queue: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65807}
-