diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-02-12 21:36:10 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-02-12 21:36:10 -0800 |
commit | 6395ca27a90fdb50f1b74ca0b17e25d39f80342e (patch) | |
tree | c603fee03901942c7bad83dc7c820cd2ab941cad /src/wasm-validator.h | |
parent | adadace7899133b4a25dab47044a373879647ddb (diff) | |
parent | f061ca831b4ec6d9d3fab0043a42fce0a0b52cf7 (diff) | |
download | binaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.tar.gz binaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.tar.bz2 binaryen-6395ca27a90fdb50f1b74ca0b17e25d39f80342e.zip |
Merge pull request #196 from WebAssembly/spec-start
Fully support start in wasm modules
Diffstat (limited to 'src/wasm-validator.h')
-rw-r--r-- | src/wasm-validator.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/wasm-validator.h b/src/wasm-validator.h index fad33a081..04493bb5b 100644 --- a/src/wasm-validator.h +++ b/src/wasm-validator.h @@ -104,6 +104,7 @@ public: shouldBeFalse(top > curr->initial); } void visitModule(Module *curr) { + // exports for (auto& exp : curr->exports) { Name name = exp->name; bool found = false; @@ -115,6 +116,14 @@ public: } shouldBeTrue(found); } + // start + if (curr->start.is()) { + auto iter = curr->functionsMap.find(curr->start); + if (shouldBeTrue(iter != curr->functionsMap.end())) { + auto func = iter->second; + shouldBeTrue(func->params.size() == 0); // must be nullary + } + } } private: @@ -135,11 +144,13 @@ private: // helpers - void shouldBeTrue(bool result) { + bool shouldBeTrue(bool result) { if (!result) valid = false; + return result; } - void shouldBeFalse(bool result) { + bool shouldBeFalse(bool result) { if (result) valid = false; + return result; } void validateAlignment(size_t align) { |