- 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}
-
- 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}
-
- 28 Aug, 2020 2 commits
-
-
Omer Katz authored
Schedule is simpler compared to the schedule in blink since it now returns deadlines based on marked bytes instead of time. If marking is ahead of schedule, return the minimum step size. Otherwise, set step size to catch up to schedule (ignoring the time passed while performing the step). No more default initial step size (needed in blink since marking speed was unknown). If estimated schedule is exceeded (marking takes longer than 500ms), the steps will try to mark all remaining objects but would still be capped by the maximum step duration of 2ms. Bug: chromium:1056170 Change-Id: I09857db161c621a12d064f9c8c21b646c34f9d71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375200 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#69602}
-
Omer Katz authored
Starting marking required Creating a Marker and calling StartMarking. StartMarking should always have been called immediately after creating the marker. Since markers are not persisted between GC (a marker exists only while marking is in progress), it makes sense to start marking implicitly when a marker is created. Calling StartMarking in MarkerBase ctor is inadvisable since subclasses might still to initialize fields. Using MarkerFactory instead guarantees that StartMarking is always called immediately after creating a Marker. Bug: chromium:1056170 Change-Id: Icbf11afd848e1618c204ca6bf951600b3ae9fef2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375199 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#69601}
-
- 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}
-
- 19 Aug, 2020 1 commit
-
-
Omer Katz authored
This CL adds a basic implementation of incremental marking for standalone GC. Followup CLs include: * Use bytes instead of time as deadline * Port incremental marking schedule from blink * Mark on allocation * Guarantees for progres/termination for standalone GC * etc... Calling StartIncrementalGarbageCollection triggers StartMarking which schedules incremental marking as non-nestable tasks. For unified heap, marking will continue running until it runs out of work but it won't finalize independently. For standalone, when incremental runs out of work it will schedule a new task in which it will finalize marking and trigger the rest of the GC. Users of standalone can also force finalization before incremental marking as finished using FinalizeIncrementalGarbageCollectionIfRunning. Calling CollectGarbage would also finalize an on-going incremental GC if one exists. Otherwise it will trigger an atomic GC. See the following doc for explanation of the various methods: https://docs.google.com/document/d/1ZhJY2fOoD8sH53ZxMh2927Zl8sXqA7azJgcQTWx-YKs/edit?usp=sharing Bug: chromium:1056170 Change-Id: I75ead414eb9da9f8b7f71c4638b9830fce7708ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298009 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69480}
-
- 16 Jul, 2020 1 commit
-
-
Omer Katz authored
This CL ports MarkingVerifier from blink. The existing verifier checks only references on heap. This new verifier checks references both on heap and on stack. Bug: chromium:1056170 Change-Id: I083dcb0087125312cca34a2201015a9aecfe6ea4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2300484 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68891}
-
- 10 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Adds support for main-thread handling of JSMember during the atomic pause. Follow-ups for later: - Copy/Move/Heterogenous assignment - Write barrier - Atomic handling for concurrent processing. Bug: chromium:1056170 Change-Id: Ia9ac4599ca85cf7cc2d67066e89485744d7d56b6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2289781 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68813}
-
- 03 Jul, 2020 2 commits
-
-
Michael Lippautz authored
- Cleanup includes, fix typo, fix qualifiers. - Fix getter names of MarkerBase when only exposed for testing. Bug: chromium:1056170 Change-Id: Ibcb0f62414c9c865fa98e6d2b2c9b150aa2a361f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2281004 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68678}
-
Michael Lippautz authored
Split off MarkingWorklists and from Marker and introduce MarkerBase. MarkerBase refers just to interfaces types for passing along visitors. The concrete Marker provides the impl for these interfaces. Unified heap marker uses different marking visitors internally but provides an implementation for the same interface. Change-Id: Ibc4b2c88e2e69bd303a95da7d167a701934f4a07 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270539 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68676}
-
- 02 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Split off MarkingState from MarkingVisitor. With this CL the marking implementation is moved to "MarkingState" which is the new bottleneck for marking a single object. MarkingVisitor merely forwards to MarkingState, which knows how to set the markbit and add the object to the worklist accordingly. This allows to have a "UnifiedHeapMarkingVisitor" in future which can easily reuse Marking to provide C++ marking. Change-Id: I87ebbe37e8e8cd841e872cae9dc3490e2b55c4dd Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270172Reviewed-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@{#68660}
-
- 01 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Move inlined methods to .h files accordingly, follwing style guide rule: https://google.github.io/styleguide/cppguide.html#Self_contained_Headers Bug: chromium:1056170 Change-Id: Ia6c4f82bd4352d507eece36e540ad0d318e56920 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2273858Reviewed-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@{#68627}
-
- 22 Jun, 2020 1 commit
-
-
Michael Lippautz authored
Mutable references are allowed by the style guide and the linter has been adjusted. Bug: v8:10624, chromium:1056170 Change-Id: I8a7dc06da5758f5c714a5e61d75378c2a13ffb9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2252192 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@{#68455}
-
- 17 Jun, 2020 1 commit
-
-
Michael Lippautz authored
This is a reland of 539f0ed2 The reland fixes creating TimeDelta from double which requires saturated_cast<>. Improvements to this constructions are tracked in v8:10620. Original change's description: > cppgc,heap: Implement atomic unified heap GC > > Add v8::CppHeap as an implementation of a cppgc heap that > integrates with V8's existing EmbedderHeapTracer API. The > current implementation only supports non-incremental marking. > > Bug: chromium:1056170 > Change-Id: I4a09eb5ae57f5c7defe35eb3fe346627eb492473 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2245610 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68374} Bug: chromium:1056170,v8:10620 Change-Id: I39e15790e5cafe24da2a14d0bae6543391ebb536 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2248191Reviewed-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@{#68387}
-
- 16 Jun, 2020 2 commits
-
-
Zhi An Ng authored
This reverts commit 539f0ed2. Reason for revert: UBSan failures https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11626? TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,bikineev@chromium.org Change-Id: I9a8c88bd5a81a55795fba077056ad1ef37287186 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2248780 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#68375}
-
Michael Lippautz authored
Add v8::CppHeap as an implementation of a cppgc heap that integrates with V8's existing EmbedderHeapTracer API. The current implementation only supports non-incremental marking. Bug: chromium:1056170 Change-Id: I4a09eb5ae57f5c7defe35eb3fe346627eb492473 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2245610 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68374}
-