• mstarzinger's avatar
    Fix terrible interaction with code flushing. · 816abc5e
    mstarzinger authored
    This fixes a terrible interaction of code flushing and the clearing of
    optimized code maps hanging off a SharedFunctionInfo. The following is
    what happened:
    1) Incremental marking cleared map in SharedFunctionInfo s, however it
       was not enqueued as a flushing candidate because one JSFunction f1
       still had optimized code.
    2) Deoptimization of f1 made s eligible for code flushing.
    3) Optimization of f2 added new entry to optimized code map of s.
    4) The JSFunction f2 became unreachable and hence is never marked.
    5) Incremental marking now visits f1, finds it eligible for flushing,
       also s is eligible for flushing, both are enqueued.
    6) Marking finishes, code flusher clears f1 and s, but the optimized
       code map of s still contains an entry.
    7) Boom!
    
    R=ulan@chromium.org,hpayer@chromium.org
    TEST=mjsunit/es6/generators-iteration
    BUG=v8:3803
    LOG=N
    
    Review URL: https://codereview.chromium.org/1197713004
    
    Cr-Commit-Position: refs/heads/master@{#29177}
    816abc5e
Name
Last commit
Last update
benchmarks Loading commit data...
build 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/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl 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...