Skip to content

Commit 1fb2b02

Browse files
tlivelykripken
authored andcommitted
Make localNames into a map (#1189)
1 parent f84fa96 commit 1fb2b02

4 files changed

Lines changed: 20 additions & 16 deletions

File tree

src/passes/ReorderLocals.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ struct ReorderLocals : public WalkerPass<PostWalker<ReorderLocals>> {
108108
auto oldLocalNames = curr->localNames;
109109
auto oldLocalIndices = curr->localIndices;
110110
curr->localNames.clear();
111-
curr->localNames.resize(newToOld.size());
112111
curr->localIndices.clear();
113112
for (size_t i = 0; i < newToOld.size(); i++) {
114113
if (newToOld[i] < oldLocalNames.size()) {

src/wasm-builder.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ class Builder {
5454

5555
for (auto& param : params) {
5656
func->params.push_back(param.type);
57-
func->localIndices[param.name] = func->localNames.size();
58-
func->localNames.push_back(param.name);
57+
Index index = func->localNames.size();
58+
func->localIndices[param.name] = index;
59+
func->localNames[index] = param.name;
5960
}
6061
for (auto& var : vars) {
6162
func->vars.push_back(var.type);
62-
func->localIndices[var.name] = func->localNames.size();
63-
func->localNames.push_back(var.name);
63+
Index index = func->localNames.size();
64+
func->localIndices[var.name] = index;
65+
func->localNames[index] = var.name;
6466
}
6567

6668
return func;
@@ -321,15 +323,17 @@ class Builder {
321323
func->params.push_back(type);
322324
Index index = func->localNames.size();
323325
func->localIndices[name] = index;
324-
func->localNames.push_back(name);
326+
func->localNames[index] = name;
325327
return index;
326328
}
327329

328330
static Index addVar(Function* func, Name name, WasmType type) {
329331
// always ok to add a var, it does not affect other indices
330332
Index index = func->getNumLocals();
331-
if (name.is()) func->localIndices[name] = index;
332-
func->localNames.push_back(name);
333+
if (name.is()) {
334+
func->localIndices[name] = index;
335+
func->localNames[index] = name;
336+
}
333337
func->vars.emplace_back(type);
334338
return index;
335339
}

src/wasm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ class Function {
591591
Expression* body;
592592

593593
// local names. these are optional.
594-
std::vector<Name> localNames;
594+
std::map<Index, Name> localNames;
595595
std::map<Name, Index> localIndices;
596596

597597
struct DebugLocation {

src/wasm/wasm.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -578,25 +578,26 @@ bool Function::isVar(Index index) {
578578
}
579579

580580
bool Function::hasLocalName(Index index) const {
581-
return index < localNames.size() && localNames[index].is();
581+
return localNames.find(index) != localNames.end();
582582
}
583583

584584
Name Function::getLocalName(Index index) {
585-
assert(hasLocalName(index));
586-
return localNames[index];
585+
return localNames.at(index);
587586
}
588587

589588
Name Function::getLocalNameOrDefault(Index index) {
590-
if (hasLocalName(index)) {
591-
return localNames[index];
589+
auto nameIt = localNames.find(index);
590+
if (nameIt != localNames.end()) {
591+
return nameIt->second;
592592
}
593593
// this is an unnamed local
594594
return Name();
595595
}
596596

597597
Name Function::getLocalNameOrGeneric(Index index) {
598-
if (hasLocalName(index)) {
599-
return localNames[index];
598+
auto nameIt = localNames.find(index);
599+
if (nameIt != localNames.end()) {
600+
return nameIt->second;
600601
}
601602
return Name::fromInt(index);
602603
}

0 commit comments

Comments
 (0)