• Omer Katz's avatar
    cppgc: Initial incremental marking implementation. · 132727fd
    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: 's avatarAnton Bikineev <bikineev@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#69480}
    132727fd
Name
Last commit
Last update
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...
.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...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS 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...
LICENSE.valgrind 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...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...