Skip to content

Commit da59a15

Browse files
authored
Followups to #2292, code cleanups for opt-utils.h (#2293)
1 parent 0cd48e6 commit da59a15

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

src/passes/opt-utils.h

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#ifndef wasm_passes_opt_utils_h
1818
#define wasm_passes_opt_utils_h
1919

20+
#include <functional>
2021
#include <unordered_set>
2122

2223
#include <pass.h>
@@ -56,51 +57,44 @@ inline void optimizeAfterInlining(std::unordered_set<Function*>& funcs,
5657
struct CallTargetReplacer : public WalkerPass<PostWalker<CallTargetReplacer>> {
5758
bool isFunctionParallel() override { return true; }
5859

59-
CallTargetReplacer(std::map<Name, Name>* replacements)
60-
: replacements(replacements) {}
60+
using MaybeReplace = std::function<void(Name&)>;
61+
62+
CallTargetReplacer(MaybeReplace maybeReplace) : maybeReplace(maybeReplace) {}
6163

6264
CallTargetReplacer* create() override {
63-
return new CallTargetReplacer(replacements);
65+
return new CallTargetReplacer(maybeReplace);
6466
}
6567

66-
void visitCall(Call* curr) {
67-
auto iter = replacements->find(curr->target);
68-
if (iter != replacements->end()) {
69-
curr->target = iter->second;
70-
}
71-
}
68+
void visitCall(Call* curr) { maybeReplace(curr->target); }
7269

7370
private:
74-
std::map<Name, Name>* replacements;
71+
MaybeReplace maybeReplace;
7572
};
7673

7774
inline void replaceFunctions(PassRunner* runner,
7875
Module& module,
79-
std::map<Name, Name>& replacements) {
76+
const std::map<Name, Name>& replacements) {
77+
auto maybeReplace = [&](Name& name) {
78+
auto iter = replacements.find(name);
79+
if (iter != replacements.end()) {
80+
name = iter->second;
81+
}
82+
};
8083
// replace direct calls
81-
CallTargetReplacer(&replacements).run(runner, &module);
84+
CallTargetReplacer(maybeReplace).run(runner, &module);
8285
// replace in table
8386
for (auto& segment : module.table.segments) {
8487
for (auto& name : segment.data) {
85-
auto iter = replacements.find(name);
86-
if (iter != replacements.end()) {
87-
name = iter->second;
88-
}
88+
maybeReplace(name);
8989
}
9090
}
9191
// replace in start
9292
if (module.start.is()) {
93-
auto iter = replacements.find(module.start);
94-
if (iter != replacements.end()) {
95-
module.start = iter->second;
96-
}
93+
maybeReplace(module.start);
9794
}
9895
// replace in exports
9996
for (auto& exp : module.exports) {
100-
auto iter = replacements.find(exp->value);
101-
if (iter != replacements.end()) {
102-
exp->value = iter->second;
103-
}
97+
maybeReplace(exp->value);
10498
}
10599
}
106100

0 commit comments

Comments
 (0)