summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-07 15:09:52 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-12-07 15:09:52 -0800
commita3e8e7d7ee21808051fba70ee8990ad20beb0223 (patch)
tree85c88a5798587f4b03ca8ec1c0d9115d49c22c3f /src
parent4b23bd513d926fb03e549bc1cf704a6016a91a70 (diff)
downloadbinaryen-a3e8e7d7ee21808051fba70ee8990ad20beb0223.tar.gz
binaryen-a3e8e7d7ee21808051fba70ee8990ad20beb0223.tar.bz2
binaryen-a3e8e7d7ee21808051fba70ee8990ad20beb0223.zip
emit exports in wasm2asm
Diffstat (limited to 'src')
-rw-r--r--src/wasm2asm.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index 62baf1b54..9921c3e3e 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -165,6 +165,7 @@ private:
void addBasics(Ref ast);
void addImport(Ref ast, Import *import);
void addTables(Ref ast, Module *wasm);
+ void addExports(Ref ast, Module *wasm);
};
Ref Wasm2AsmBuilder::processWasm(Module* wasm) {
@@ -194,8 +195,8 @@ Ref Wasm2AsmBuilder::processWasm(Module* wasm) {
asmFunc[3]->push_back(processFunction(func));
}
addTables(asmFunc[3], wasm);
- // table XXX
// memory XXX
+ addExports(asmFunc[3], wasm);
return ret;
}
@@ -288,6 +289,14 @@ void Wasm2AsmBuilder::addTables(Ref ast, Module *wasm) {
}
}
+void Wasm2AsmBuilder::addExports(Ref ast, Module *wasm) {
+ Ref exports = ValueBuilder::makeObject();
+ for (auto export_ : wasm->exports) {
+ ValueBuilder::appendToObject(exports, fromName(export_->name), ValueBuilder::makeName(fromName(export_->value)));
+ }
+ ast->push_back(ValueBuilder::makeStatement(ValueBuilder::makeReturn(exports)));
+}
+
Ref Wasm2AsmBuilder::processFunction(Function* func) {
Ref ret = ValueBuilder::makeFunction(fromName(func->name));
frees.clear();