• akodat's avatar
    Add Isolate::DiscardThreadSpecificMetadata method to embedder API. · aeb8073c
    akodat authored
    If many threads use the same Isolate (or many Isolates) and then
    terminate, their PerIsolateThreadData objects are never cleaned
    up, resulting in a slow memory leak and, worse, the
    PerIsolateThreadData chain getting larger and larger, adversely
    affecting performance.
    
    In this situation, embedders will now be encouraged to apply
    DiscardThreadSpecificMetadata against any Isolate a thread is
    done with, especially if the thread is about to terminate.
    
    Note that it is harmless to run DiscardThreadSpecificMetadata
    against an Isolate for which a thread has no thread data and
    per-Isolate thread data can be reestablished if a thread starts
    using an Isolate again after running DiscardThreadSpecificMetadata
    against it.
    
    It is, however, an embedder error to run
    DiscardThreadSpecificMetadata against an Isolate in thread with a
    Locker for the Isolate in the stack or against an Entered Isolate.
    
    This change cannot cause any change in behavior in existing apps
    as the only added coded can only be reached via the new
    DiscardThreadSpecificMetadata method.
    
    R=Jakob, jochen
    BUG=
    
    Review URL: https://codereview.chromium.org/1522703002
    
    Cr-Commit-Position: refs/heads/master@{#32909}
    aeb8073c
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs 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...
snapshot_toolchain.gni Loading commit data...