• 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...
cctest Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...