• mtrofin's avatar
    [wasm] reuse the first compiled module. · b4dc310a
    mtrofin authored
    This change avoids needing to keep around an unused compiled
    module. Instead, the result of compiling the wasm bytes is
    given to the first instance. The module object and that instance object
    point to the same compiled module. Instances are, then, cloned from
    the compiled module the module object points to. When an instance is
    collected, we make sure that the module object still has a clone
    available, and, if the last instance is GC-ed, we also reset the compiled
    module so that it does not reference its heap, so that it (==heap) may
    be collected.
    
    This is achieved by linking the clones in a double-linked list and
    registering a finalizer for each. When we create an instance, we tie it
    in the front of the list, making the module object point to it (O(1)). When
    the finalizer is called, we relink the list over the dying object (O(1)). The
    costliest operation is finalizing the last instance, since we need to visit
    all wasm functions and reset heap references.
    
    BUG=v8:5316
    
    Committed: https://crrev.com/01f5af515728aebe6c5246f4f7dd6c573e8748af
    Review-Url: https://codereview.chromium.org/2305903002
    Cr-Original-Commit-Position: refs/heads/master@{#39153}
    Cr-Commit-Position: refs/heads/master@{#39361}
    b4dc310a
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.gn 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...
Makefile Loading commit data...
Makefile.android 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...