• 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
wasm-interpreter.cc 90.2 KB