[llvm-branch-commits] [MC][NFC] Use vector for GUIDProbeFunctionMap (PR #102905)
Lei Wang via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Aug 15 23:56:25 PDT 2024
================
@@ -390,32 +390,41 @@ bool MCPseudoProbeDecoder::buildGUID2FuncDescMap(const uint8_t *Start,
Data = Start;
End = Data + Size;
+ uint32_t FuncDescCount = 0;
while (Data < End) {
- auto ErrorOrGUID = readUnencodedNumber<uint64_t>();
- if (!ErrorOrGUID)
+ if (!readUnencodedNumber<uint64_t>())
return false;
-
- auto ErrorOrHash = readUnencodedNumber<uint64_t>();
- if (!ErrorOrHash)
+ if (!readUnencodedNumber<uint64_t>())
return false;
auto ErrorOrNameSize = readUnsignedNumber<uint32_t>();
if (!ErrorOrNameSize)
return false;
- uint32_t NameSize = std::move(*ErrorOrNameSize);
-
- auto ErrorOrName = readString(NameSize);
- if (!ErrorOrName)
+ if (!readString(*ErrorOrNameSize))
return false;
+ ++FuncDescCount;
+ }
+ assert(Data == End && "Have unprocessed data in pseudo_probe_desc section");
+ GUID2FuncDescMap.reserve(FuncDescCount);
- uint64_t GUID = std::move(*ErrorOrGUID);
- uint64_t Hash = std::move(*ErrorOrHash);
- StringRef Name = std::move(*ErrorOrName);
+ Data = Start;
+ End = Data + Size;
+ while (Data < End) {
+ uint64_t GUID =
+ cantFail(errorOrToExpected(readUnencodedNumber<uint64_t>()));
+ uint64_t Hash =
+ cantFail(errorOrToExpected(readUnencodedNumber<uint64_t>()));
+ uint32_t NameSize =
+ cantFail(errorOrToExpected(readUnsignedNumber<uint32_t>()));
+ StringRef Name = cantFail(errorOrToExpected(readString(NameSize)));
// Initialize PseudoProbeFuncDesc and populate it into GUID2FuncDescMap
- GUID2FuncDescMap.emplace(GUID, MCPseudoProbeFuncDesc(GUID, Hash, Name));
+ GUID2FuncDescMap.emplace_back(GUID, Hash, Name.copy(FuncNameAllocator));
}
assert(Data == End && "Have unprocessed data in pseudo_probe_desc section");
+ llvm::sort(GUID2FuncDescMap, [](const auto &LHS, const auto &RHS) {
+ return LHS.FuncGUID < RHS.FuncGUID;
+ });
----------------
wlei-llvm wrote:
Similarly, add the assertion for the reserved size.
https://github.com/llvm/llvm-project/pull/102905
More information about the llvm-branch-commits
mailing list