From 835a9c2801a62c2b7b35d7c2985eec32f518dbf5 Mon Sep 17 00:00:00 2001 From: Amir Ayupov Date: Sun, 11 Dec 2022 11:57:30 -0800 Subject: [PATCH] [BOLT][NFC] Use std::optional in DataAggregator --- bolt/include/bolt/Profile/DataAggregator.h | 8 ++++---- bolt/lib/Profile/DataAggregator.cpp | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/bolt/include/bolt/Profile/DataAggregator.h b/bolt/include/bolt/Profile/DataAggregator.h index e598d1a..7f96f4f 100644 --- a/bolt/include/bolt/Profile/DataAggregator.h +++ b/bolt/include/bolt/Profile/DataAggregator.h @@ -346,10 +346,10 @@ private: ErrorOr> parseMMapEvent(); /// Parse PERF_RECORD_FORK event. - Optional parseForkEvent(); + std::optional parseForkEvent(); /// Parse 'PERF_RECORD_COMM exec'. Don't consume the string. - Optional parseCommExecEvent(); + std::optional parseCommExecEvent(); /// Parse the full output generated by `perf script --show-mmap-events` /// to generate mapping between binary files and their memory mappings for @@ -361,7 +361,7 @@ private: std::error_code parseTaskEvents(); /// Parse a single pair of binary full path and associated build-id - Optional> parseNameBuildIDPair(); + std::optional> parseNameBuildIDPair(); /// Coordinate reading and parsing of pre-aggregated file /// @@ -480,7 +480,7 @@ public: /// Parse the output generated by "perf buildid-list" to extract build-ids /// and return a file name matching a given \p FileBuildID. - Optional getFileNameForBuildID(StringRef FileBuildID); + std::optional getFileNameForBuildID(StringRef FileBuildID); }; } // namespace bolt } // namespace llvm diff --git a/bolt/lib/Profile/DataAggregator.cpp b/bolt/lib/Profile/DataAggregator.cpp index 2fedd57..39c07a3 100644 --- a/bolt/lib/Profile/DataAggregator.cpp +++ b/bolt/lib/Profile/DataAggregator.cpp @@ -299,7 +299,7 @@ void DataAggregator::processFileBuildID(StringRef FileBuildID) { FileBuf = std::move(*MB); ParsingBuf = FileBuf->getBuffer(); - Optional FileName = getFileNameForBuildID(FileBuildID); + std::optional FileName = getFileNameForBuildID(FileBuildID); if (!FileName) { if (hasAllBuildIDs()) { errs() << "PERF2BOLT-ERROR: failed to match build-id from perf output. " @@ -1823,7 +1823,7 @@ void DataAggregator::processPreAggregated() { outs() << "\n"; } -Optional DataAggregator::parseCommExecEvent() { +std::optional DataAggregator::parseCommExecEvent() { size_t LineEnd = ParsingBuf.find_first_of("\n"); if (LineEnd == StringRef::npos) { reportError("expected rest of line"); @@ -1851,7 +1851,7 @@ Optional DataAggregator::parseCommExecEvent() { } namespace { -Optional parsePerfTime(const StringRef TimeStr) { +std::optional parsePerfTime(const StringRef TimeStr) { const StringRef SecTimeStr = TimeStr.split('.').first; const StringRef USecTimeStr = TimeStr.split('.').second; uint64_t SecTime; @@ -1863,7 +1863,7 @@ Optional parsePerfTime(const StringRef TimeStr) { } } -Optional DataAggregator::parseForkEvent() { +std::optional DataAggregator::parseForkEvent() { while (checkAndConsumeFS()) { } @@ -1885,7 +1885,7 @@ Optional DataAggregator::parseForkEvent() { const StringRef TimeStr = Line.substr(0, Pos).rsplit(':').first.rsplit(FieldSeparator).second; - if (Optional TimeRes = parsePerfTime(TimeStr)) { + if (std::optional TimeRes = parsePerfTime(TimeStr)) { FI.Time = *TimeRes; } @@ -1938,7 +1938,7 @@ DataAggregator::parseMMapEvent() { const StringRef TimeStr = Line.substr(0, Pos).rsplit(':').first.rsplit(FieldSeparator).second; - if (Optional TimeRes = parsePerfTime(TimeStr)) + if (std::optional TimeRes = parsePerfTime(TimeStr)) ParsedInfo.Time = *TimeRes; Line = Line.drop_front(Pos); @@ -2103,7 +2103,7 @@ std::error_code DataAggregator::parseTaskEvents() { TimerGroupDesc, opts::TimeAggregator); while (hasData()) { - if (Optional CommInfo = parseCommExecEvent()) { + if (std::optional CommInfo = parseCommExecEvent()) { // Remove forked child that ran execve auto MMapInfoIter = BinaryMMapInfo.find(*CommInfo); if (MMapInfoIter != BinaryMMapInfo.end() && MMapInfoIter->second.Forked) @@ -2112,7 +2112,7 @@ std::error_code DataAggregator::parseTaskEvents() { continue; } - Optional ForkInfo = parseForkEvent(); + std::optional ForkInfo = parseForkEvent(); if (!ForkInfo) continue; @@ -2148,7 +2148,7 @@ std::error_code DataAggregator::parseTaskEvents() { return std::error_code(); } -Optional> +std::optional> DataAggregator::parseNameBuildIDPair() { while (checkAndConsumeFS()) { } @@ -2190,13 +2190,14 @@ bool DataAggregator::hasAllBuildIDs() { return !HasInvalidEntries; } -Optional +std::optional DataAggregator::getFileNameForBuildID(StringRef FileBuildID) { const StringRef SavedParsingBuf = ParsingBuf; StringRef FileName; while (hasData()) { - Optional> IDPair = parseNameBuildIDPair(); + std::optional> IDPair = + parseNameBuildIDPair(); if (!IDPair) { consumeRestOfLine(); continue; -- 2.7.4