From 6f68dea876719de1e07f8f4d9b35fc5d75a1c5dd Mon Sep 17 00:00:00 2001 From: Dave Lee Date: Mon, 17 Jan 2022 15:36:42 -0800 Subject: [PATCH] [Reflection] Reduce string copying in TypeRefBuilder --- stdlib/public/Reflection/TypeRefBuilder.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/stdlib/public/Reflection/TypeRefBuilder.cpp b/stdlib/public/Reflection/TypeRefBuilder.cpp index d7a88e95136a3..803ca18e9bac4 100644 --- a/stdlib/public/Reflection/TypeRefBuilder.cpp +++ b/stdlib/public/Reflection/TypeRefBuilder.cpp @@ -107,7 +107,7 @@ TypeRefBuilder::normalizeReflectionName(RemoteRef reflectionName) { if (!mangling.isSuccess()) { return {}; } - return mangling.result(); + return std::move(mangling.result()); } } @@ -194,16 +194,16 @@ const TypeRef *TypeRefBuilder::lookupSuperclass(const TypeRef *TR) { RemoteRef TypeRefBuilder::getFieldTypeInfo(const TypeRef *TR) { - std::string MangledName; + const std::string *MangledName; if (auto N = dyn_cast(TR)) - MangledName = N->getMangledName(); + MangledName = &N->getMangledName(); else if (auto BG = dyn_cast(TR)) - MangledName = BG->getMangledName(); + MangledName = &BG->getMangledName(); else return nullptr; // Try the cache. - auto Found = FieldTypeInfoCache.find(MangledName); + auto Found = FieldTypeInfoCache.find(*MangledName); if (Found != FieldTypeInfoCache.end()) return Found->second; @@ -216,13 +216,13 @@ TypeRefBuilder::getFieldTypeInfo(const TypeRef *TR) { continue; auto CandidateMangledName = readTypeRef(FD, FD->MangledTypeName); if (auto NormalizedName = normalizeReflectionName(CandidateMangledName)) - FieldTypeInfoCache[*NormalizedName] = FD; + FieldTypeInfoCache[std::move(*NormalizedName)] = FD; } // Since we're done with the current ReflectionInfo, increment early in // case we get a cache hit. ++FirstUnprocessedReflectionInfoIndex; - Found = FieldTypeInfoCache.find(MangledName); + Found = FieldTypeInfoCache.find(*MangledName); if (Found != FieldTypeInfoCache.end()) return Found->second; }