• Clemens Hammacher's avatar
    [wasm][gc] Fix infinite GC loop · ac497d1c
    Clemens Hammacher authored
    One fundamental assumption of the wasm code GC is that code becomes
    "potentially dead" at most once; if the ref counts drops to zero later,
    it should be freed for real.
    In the current implementation, it happens that code becomes potentially
    dead, then becomes dead for real (it's removed from the set of
    potentially dead code), and then we remove the last reference. At that
    point, we re-add the code to the potentially dead code, considering it
    for garbage collection again. This can lead to an endless loop.
    
    This CL fixes that by remembering which code was already detected as
    dead, and does not consider this code for another GC.
    This requires freeing code via the {WasmEngine} such that the set of
    dead code can be cleaned up.
    
    R=mstarzinger@chromium.org
    
    Bug: v8:8217
    Change-Id: If6a95a7918db2ad82edfad5447c536593243db7d
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1585845Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61073}
    ac497d1c
Name
Last commit
Last update
benchmarks 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...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig 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...
ChangeLog Loading commit data...
DEPS 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...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...