[wasm] Fix interpreter stack height for throwing opcode.
This makes sure that the implicit operand stack slot used for passing an exception from the throw-site to the catch-site is counted against the maximum stack height. R=clemensh@chromium.org TEST=mjsunit/wasm/exceptions-rethrow-interpreter BUG=v8:8091 Change-Id: I7e8f47ba4662eb273792e7508207f67588264a2f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1554683 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60658}
This commit is contained in:
parent
d97bc8db79
commit
77d05811ad
@ -803,6 +803,9 @@ class SideTable : public ZoneObject {
|
||||
DCHECK_GE(control_stack.size() - 1, exception_stack.back());
|
||||
const Control* c = &control_stack[exception_stack.back()];
|
||||
if (!unreachable) c->else_label->Ref(i.pc(), exceptional_stack_height);
|
||||
if (exceptional_stack_height + kCatchInArity > max_stack_height_) {
|
||||
max_stack_height_ = exceptional_stack_height + kCatchInArity;
|
||||
}
|
||||
TRACE("handler @%u: %s -> try @%u\n", i.pc_offset(), OpcodeName(opcode),
|
||||
static_cast<uint32_t>(c->pc - code->start));
|
||||
}
|
||||
|
12
test/mjsunit/wasm/exceptions-rethrow-interpreter.js
Normal file
12
test/mjsunit/wasm/exceptions-rethrow-interpreter.js
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --expose-wasm --experimental-wasm-eh --allow-natives-syntax
|
||||
// Flags: --wasm-interpret-all
|
||||
|
||||
// This is just a wrapper for existing exception handling test cases that runs
|
||||
// with the --wasm-interpret-all flag added. If we ever decide to add a test
|
||||
// variant for this, then we can remove this file.
|
||||
|
||||
load("test/mjsunit/wasm/exceptions-rethrow.js");
|
Loading…
Reference in New Issue
Block a user