Skip to content

Commit 6f68dea

Browse files
committed
[Reflection] Reduce string copying in TypeRefBuilder
1 parent 5a9abb2 commit 6f68dea

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

stdlib/public/Reflection/TypeRefBuilder.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ TypeRefBuilder::normalizeReflectionName(RemoteRef<char> reflectionName) {
107107
if (!mangling.isSuccess()) {
108108
return {};
109109
}
110-
return mangling.result();
110+
return std::move(mangling.result());
111111
}
112112
}
113113

@@ -194,16 +194,16 @@ const TypeRef *TypeRefBuilder::lookupSuperclass(const TypeRef *TR) {
194194

195195
RemoteRef<FieldDescriptor>
196196
TypeRefBuilder::getFieldTypeInfo(const TypeRef *TR) {
197-
std::string MangledName;
197+
const std::string *MangledName;
198198
if (auto N = dyn_cast<NominalTypeRef>(TR))
199-
MangledName = N->getMangledName();
199+
MangledName = &N->getMangledName();
200200
else if (auto BG = dyn_cast<BoundGenericTypeRef>(TR))
201-
MangledName = BG->getMangledName();
201+
MangledName = &BG->getMangledName();
202202
else
203203
return nullptr;
204204

205205
// Try the cache.
206-
auto Found = FieldTypeInfoCache.find(MangledName);
206+
auto Found = FieldTypeInfoCache.find(*MangledName);
207207
if (Found != FieldTypeInfoCache.end())
208208
return Found->second;
209209

@@ -216,13 +216,13 @@ TypeRefBuilder::getFieldTypeInfo(const TypeRef *TR) {
216216
continue;
217217
auto CandidateMangledName = readTypeRef(FD, FD->MangledTypeName);
218218
if (auto NormalizedName = normalizeReflectionName(CandidateMangledName))
219-
FieldTypeInfoCache[*NormalizedName] = FD;
219+
FieldTypeInfoCache[std::move(*NormalizedName)] = FD;
220220
}
221221

222222
// Since we're done with the current ReflectionInfo, increment early in
223223
// case we get a cache hit.
224224
++FirstUnprocessedReflectionInfoIndex;
225-
Found = FieldTypeInfoCache.find(MangledName);
225+
Found = FieldTypeInfoCache.find(*MangledName);
226226
if (Found != FieldTypeInfoCache.end())
227227
return Found->second;
228228
}

0 commit comments

Comments
 (0)