• 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
..
OWNERS Loading commit data...
decoder.h Loading commit data...
function-body-decoder-impl.h Loading commit data...
function-body-decoder.cc Loading commit data...
function-body-decoder.h Loading commit data...
leb-helper.h Loading commit data...
local-decl-encoder.cc Loading commit data...
local-decl-encoder.h Loading commit data...
module-decoder.cc Loading commit data...
module-decoder.h Loading commit data...
signature-map.cc Loading commit data...
signature-map.h Loading commit data...
wasm-code-specialization.cc Loading commit data...
wasm-code-specialization.h Loading commit data...
wasm-debug.cc Loading commit data...
wasm-external-refs.cc Loading commit data...
wasm-external-refs.h Loading commit data...
wasm-interpreter.cc Loading commit data...
wasm-interpreter.h Loading commit data...
wasm-js.cc Loading commit data...
wasm-js.h Loading commit data...
wasm-limits.h Loading commit data...
wasm-module-builder.cc Loading commit data...
wasm-module-builder.h Loading commit data...
wasm-module.cc Loading commit data...
wasm-module.h Loading commit data...
wasm-objects.cc Loading commit data...
wasm-objects.h Loading commit data...
wasm-opcodes.cc Loading commit data...
wasm-opcodes.h Loading commit data...
wasm-result.cc Loading commit data...
wasm-result.h Loading commit data...
wasm-text.cc Loading commit data...
wasm-text.h Loading commit data...