diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm-binary.h | 3 | ||||
-rw-r--r-- | src/wasm/wasm-binary.cpp | 5 |
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); } |