From f5beae2835377e452c95c5b64a90a75b97b3234e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 22 Nov 2015 15:39:06 -0800 Subject: emit constants instead of callImport when there is a type necessary --- src/passes/RemoveImports.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/passes/RemoveImports.cpp b/src/passes/RemoveImports.cpp index 07465f9d6..06865a8f9 100644 --- a/src/passes/RemoveImports.cpp +++ b/src/passes/RemoveImports.cpp @@ -13,20 +13,27 @@ namespace wasm { struct RemoveImports : public Pass { MixedArena* allocator; + std::map importsMap; void prepare(PassRunner* runner, Module *module) override { allocator = runner->allocator; + importsMap = module->importsMap; } void visitCallImport(CallImport *curr) override { - replaceCurrent(allocator->alloc()); + WasmType type = importsMap[curr->target]->type.result; + if (type == none) { + replaceCurrent(allocator->alloc()); + } else { + Literal nopLiteral; + nopLiteral.type = type; + replaceCurrent(allocator->alloc()->set(nopLiteral)); + } } void visitModule(Module *curr) { - auto imports = curr->imports; - for (auto import : imports) { - curr->removeImport(import->name); - } + curr->importsMap.clear(); + curr->imports.clear(); } }; -- cgit v1.2.3