• 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
Name
Last commit
Last update
.github Loading commit data...
bazel Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.bazelrc Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.mailmap Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LOONG_OWNERS Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...