summaryrefslogtreecommitdiff
path: root/src/passes/RemoveImports.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-04 17:24:07 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-04 17:24:07 -0700
commitb243bf42bf89bee18ece60fb0607cf1fb70ce702 (patch)
treecbef2b087729ea063d9827155873686b71ec1dd1 /src/passes/RemoveImports.cpp
parentf84152a645d5585bb16f37164f838f87bfcf972e (diff)
parente6e701474b102b0f9b9d15f6b2c82f26cf956b6d (diff)
downloadbinaryen-b243bf42bf89bee18ece60fb0607cf1fb70ce702.tar.gz
binaryen-b243bf42bf89bee18ece60fb0607cf1fb70ce702.tar.bz2
binaryen-b243bf42bf89bee18ece60fb0607cf1fb70ce702.zip
Merge pull request #311 from WebAssembly/module-access
Access module elements using calls
Diffstat (limited to 'src/passes/RemoveImports.cpp')
-rw-r--r--src/passes/RemoveImports.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/passes/RemoveImports.cpp b/src/passes/RemoveImports.cpp
index cd741180f..6463df10c 100644
--- a/src/passes/RemoveImports.cpp
+++ b/src/passes/RemoveImports.cpp
@@ -29,15 +29,15 @@ namespace wasm {
struct RemoveImports : public WalkerPass<WasmWalker<RemoveImports>> {
MixedArena* allocator;
- std::map<Name, Import*> importsMap;
+ Module* module;
- void prepare(PassRunner* runner, Module *module) override {
+ void prepare(PassRunner* runner, Module *module_) override {
allocator = runner->allocator;
- importsMap = module->importsMap;
+ module = module_;
}
void visitCallImport(CallImport *curr) {
- WasmType type = importsMap[curr->target]->type->result;
+ WasmType type = module->getImport(curr->target)->type->result;
if (type == none) {
replaceCurrent(allocator->alloc<Nop>());
} else {
@@ -48,8 +48,10 @@ struct RemoveImports : public WalkerPass<WasmWalker<RemoveImports>> {
}
void visitModule(Module *curr) {
- curr->importsMap.clear();
- curr->imports.clear();
+ auto imports = curr->imports; // copy
+ for (auto* import : imports) {
+ curr->removeImport(import->name);
+ }
}
};