diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-08-18 11:15:39 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 09:55:01 -0700 |
commit | 2e2e0241a10c0eccb89365c1b50217d6d0d3a386 (patch) | |
tree | 4f19b9cc857065ffd30e956f787af546c73cccec /src/wasm-s-parser.h | |
parent | e0809680bb82ecfc950aef97537827442b559fcf (diff) | |
download | binaryen-2e2e0241a10c0eccb89365c1b50217d6d0d3a386.tar.gz binaryen-2e2e0241a10c0eccb89365c1b50217d6d0d3a386.tar.bz2 binaryen-2e2e0241a10c0eccb89365c1b50217d6d0d3a386.zip |
export kinds
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r-- | src/wasm-s-parser.h | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index 429dde417..b6270217b 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -443,6 +443,7 @@ private: auto ex = make_unique<Export>(); ex->name = exportName; ex->value = name; + ex->kind = Export::Function; wasm.addExport(ex.release()); } functionCounter++; @@ -1405,15 +1406,28 @@ private: } void parseExport(Element& s) { + std::unique_ptr<Export> ex = make_unique<Export>(); if (!s[2]->dollared() && !std::isdigit(s[2]->str()[0])) { - assert(s[2]->str() == MEMORY); - if (!hasMemory) throw ParseException("memory exported but no memory"); - wasm.memory.exportName = s[1]->str(); - return; + ex->name = s[1]->str(); + if (s[2]->str() == MEMORY) { + if (!hasMemory) throw ParseException("memory exported but no memory"); + ex->value = Name::fromInt(0); + ex->kind = Export::Memory; + } else if (s[2]->str() == TABLE) { + ex->value = Name::fromInt(0); + ex->kind = Export::Table; + } else if (s[2]->str() == GLOBAL) { + ex->value = s[3]->str(); + ex->kind = Export::Table; + } else { + WASM_UNREACHABLE(); + } + } else { + // function + ex->name = s[1]->str(); + ex->value = s[2]->str(); + ex->kind = Export::Function; } - std::unique_ptr<Export> ex = make_unique<Export>(); - ex->name = s[1]->str(); - ex->value = s[2]->str(); wasm.addExport(ex.release()); } |