summaryrefslogtreecommitdiff
path: root/src/wasm-validator.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-12 21:36:10 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-12 21:36:10 -0800
commit6395ca27a90fdb50f1b74ca0b17e25d39f80342e (patch)
treec603fee03901942c7bad83dc7c820cd2ab941cad /src/wasm-validator.h
parentadadace7899133b4a25dab47044a373879647ddb (diff)
parentf061ca831b4ec6d9d3fab0043a42fce0a0b52cf7 (diff)
downloadbinaryen-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.h15
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) {