• Andreas Haas's avatar
    [wasm] Improve stack check in the interpreter · 793c52ed
    Andreas Haas authored
    The existing stack check only checked the number of stack frames on the
    stack, not the actual size of the stack frames. In the test case, each
    stack frame is huge, and the interpreter runs out of memory before the
    stack check stops the execution. With this change we take the size of
    the value stack and the size of the control stack and compare their sum
    to the stack limit of V8. Note that this stack limit is kind of
    arbitrary, because the stack space of the interpreter is not on the
    actual runtime stack but allocated in zone memory, and the stack check
    exists to simulate stack overflows in compiled code, not to prevent
    actual stack overflows.
    
    R=clemensh@chromium.org
    TEST=mjsunit/regress/wasm/regress-778917
    
    Bug: chromium:778917
    Change-Id: Ife47631fcb1a178a68facab1e42c0069b12c0155
    Reviewed-on: https://chromium-review.googlesource.com/744003
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49071}
    793c52ed
Name
Last commit
Last update
..
baseline Loading commit data...
OWNERS Loading commit data...
compilation-manager.cc Loading commit data...
compilation-manager.h 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...
memory-tracing.cc Loading commit data...
memory-tracing.h Loading commit data...
module-compiler.cc Loading commit data...
module-compiler.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...
streaming-decoder.cc Loading commit data...
streaming-decoder.h Loading commit data...
wasm-api.cc Loading commit data...
wasm-api.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-heap.cc Loading commit data...
wasm-heap.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-memory.cc Loading commit data...
wasm-memory.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-inl.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...
wasm-value.h Loading commit data...