1. 04 Feb, 2022 17 commits
  2. 03 Feb, 2022 22 commits
  3. 02 Feb, 2022 1 commit
    • Nikolaos Papaspyrou's avatar
      heap: Fix the tracing of GC cycles · 73a1c635
      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.
      
      This is a reland of 4ad20bff
      which was reviewed here: https://crrev.com/3404733
      
      Bug: v8:12503
      Bug: chromium:1154636
      Change-Id: Icc315b53cff1f3b19b8efe49db34340a5608bcd2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3432211Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78911}
      73a1c635