From 2a138faec4b21ee2eae89f00d1e00987bab6305a Mon Sep 17 00:00:00 2001 From: Thomas Lively <7121787+tlively@users.noreply.github.com> Date: Wed, 3 Jul 2019 15:56:04 -0700 Subject: Initial tail call implementation (#2197) Including parsing, printing, assembling, disassembling. TODO: - interpreting - effects - finalization and typing - fuzzing - JS/C API --- src/wasm/wasm-validator.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/wasm/wasm-validator.cpp') diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp index 1d12c2452..01cb1e2a8 100644 --- a/src/wasm/wasm-validator.cpp +++ b/src/wasm/wasm-validator.cpp @@ -569,6 +569,9 @@ void FunctionValidator::visitSwitch(Switch* curr) { } void FunctionValidator::visitCall(Call* curr) { + shouldBeTrue(!curr->isReturn || getModule()->features.hasTailCall(), + curr, + "return_call requires tail calls to be enabled"); if (!info.validateGlobally) { return; } @@ -593,6 +596,9 @@ void FunctionValidator::visitCall(Call* curr) { } void FunctionValidator::visitCallIndirect(CallIndirect* curr) { + shouldBeTrue(!curr->isReturn || getModule()->features.hasTailCall(), + curr, + "return_call_indirect requires tail calls to be enabled"); if (!info.validateGlobally) { return; } -- cgit v1.2.3