summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-01-14 09:48:49 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-01-14 09:48:49 -0800
commit1345f70a7d5c56196fb42ab9ae3cc1162c2c46bb (patch)
treeb8109a1ef07502c1525700816acb374cb2c79118
parent0bfe85636f9068819387edcad5d39d33af65f491 (diff)
downloadbinaryen-1345f70a7d5c56196fb42ab9ae3cc1162c2c46bb.tar.gz
binaryen-1345f70a7d5c56196fb42ab9ae3cc1162c2c46bb.tar.bz2
binaryen-1345f70a7d5c56196fb42ab9ae3cc1162c2c46bb.zip
fix call_import
-rw-r--r--src/wasm-binary.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 73cd25a53..dd9a548bd 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -1027,6 +1027,8 @@ public:
if (import) {
auto imp = allocator.alloc<Import>();
imp->name = name;
+ imp->module = ENV;
+ imp->base = name;
imp->type = type;
wasm.addImport(imp);
} else {
@@ -1153,9 +1155,9 @@ public:
assert(target.is());
if (debug) std::cerr << "call(import?) target: " << target << std::endl;
if (wasm.importsMap.find(target) == wasm.importsMap.end()) {
+ assert(wasm.functionsMap.find(target) != wasm.functionsMap.end());
return visitCall((curr = allocator.alloc<Call>())->cast<Call>(), target);
} else {
- assert(wasm.functionsMap.find(target) != wasm.functionsMap.end());
return visitCallImport((curr = allocator.alloc<CallImport>())->cast<CallImport>(), target);
}
}
@@ -1259,8 +1261,7 @@ public:
void visitCallImport(CallImport *curr, Name target) {
if (debug) std::cerr << "CallImport" << std::endl;
curr->target = target;
- Name type = wasm.functionsMap[curr->target]->type;
- auto num = wasm.functionTypesMap[type]->params.size();
+ auto num = wasm.importsMap[curr->target]->type->params.size();
for (size_t i = 0; i < num; i++) {
Expression* operand;
readExpression(operand);