summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm-binary.h3
-rw-r--r--src/wasm/wasm-binary.cpp5
2 files changed, 7 insertions, 1 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index b308abade..e9ad665c4 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -48,7 +48,8 @@ enum {
enum WebLimitations : uint32_t {
MaxDataSegments = 100 * 1000,
MaxFunctionBodySize = 128 * 1024,
- MaxFunctionLocals = 50 * 1000
+ MaxFunctionLocals = 50 * 1000,
+ MaxFunctionParams = 1000
};
template<typename T, typename MiniT> struct LEB {
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 4e5db69b1..55dafadd4 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -453,6 +453,11 @@ void WasmBinaryWriter::writeFunctions() {
tableOfContents.functionBodies.emplace_back(
func->name, sizePos + sizeFieldSize, size);
binaryLocationTrackedExpressionsForFunc.clear();
+
+ if (func->getParams().size() > WebLimitations::MaxFunctionParams) {
+ std::cerr << "Some VMs may not accept this binary because it has a large "
+ << "number of parameters in function " << func->name << ".\n";
+ }
});
finishSection(sectionStart);
}