• Clemens Hammacher's avatar
    [wasm] [interpreter] Avoid redundant stack limit checks · 213d1fa6
    Clemens Hammacher authored
    The interpreter used a ZoneVector<WasmVal> to model the value stack.
    Thus, at each single pop to the stack, a bounds check was performed,
    and the storage was potentially extended.
    This CL changes this to pre-allocate enough space for the stack of a
    function when a new frame is entered. This avoids any checks for pushs
    and pops.
    Instead of storing a ZoneVector<WasmVal>, we store WasmVal* directly.
    The maximum value stack size is precomputed together with the control
    transfer side table.
    
    This CL speeds up interpreted execution by 15% on average (measured
    locally on a Z840).
    
    R=ahaas@chromium.org
    BUG=v8:5822
    
    Change-Id: If949f7ee5233d874cd6a04b7dde2d7b4a95e45ea
    Reviewed-on: https://chromium-review.googlesource.com/488061
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#44902}
    213d1fa6
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 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...