-
Nikolaos Papaspyrou authored
Conceptually, a full GC cycle completes when the sweeping phase is finished. As sweeping is performed concurrently, this happens after Heap::CollectGarbage has returned and, at the latest, before the next full GC cycle begins. However, an arbitrary number of young GC cycles may happen in the meantime. Tracing information for the sweeping phase must be added to the corresponding full GC cycle event. Until now, this was not done correctly: this information was added to the GCTracer's current event and could thus be attributed to a subsequent young or full GC cycle. This CL introduces methods GCTracer::(Start|Stop)Cycle to delimit a cycle (still allowing for full GC cycles to be interrupted by young GC cycles). These methods are different from (Start|Stop)ObservablePause, which delimit the observable pause of each GC. The events of "pending" full GC cycles are kept until they are properly amended and reported, when the sweeping phase is finished. Bug: chromium:1154636 Change-Id: I2fbc65d4807c78656d4abc8c451043f6f86211b1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3404733Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Cr-Commit-Position: refs/heads/main@{#78905}
4ad20bff