[wasm] Avoid redundant {EndControl}

Many callers of {DoReturn} either already call {EndControl}, or pop
the control afterwards, hence we do not need to {EndControl}.
Hence only call {EndControl} when really needed.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: Ie4e7b2dd6918cc0f9619a72d624014222f58a251
Reviewed-on: https://chromium-review.googlesource.com/c/1384085
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58359}
This commit is contained in:
Clemens Hammacher 2018-12-19 12:13:09 +01:00 committed by Commit Bot
parent 4aa97de1af
commit e95be4598c

View File

@ -1895,6 +1895,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
case kExprReturn: {
if (!TypeCheckReturn()) break;
DoReturn();
EndControl();
break;
}
case kExprUnreachable: {
@ -2572,8 +2573,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
: Vector<Value>{&*(stack_.end() - return_count), return_count};
CALL_INTERFACE_IF_REACHABLE(DoReturn, return_values);
EndControl();
}
inline Value* Push(ValueType type) {