Skip to content

Commit 50f8580

Browse files
[memprof] Add IndexedMemProfData::addFrame (#118724)
This patch adds a helper function to replace an idiom like: FrameId Id = F.hash(); MemProfData.Frames.try_emplace(Id, F); // Do something with Id.
1 parent 7f72d71 commit 50f8580

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

llvm/include/llvm/ProfileData/MemProf.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,6 +1023,12 @@ struct IndexedMemProfData {
10231023

10241024
// A map to hold call stack id to call stacks.
10251025
llvm::MapVector<CallStackId, llvm::SmallVector<FrameId>> CallStacks;
1026+
1027+
FrameId addFrame(const Frame &F) {
1028+
const FrameId Id = F.hash();
1029+
Frames.try_emplace(Id, F);
1030+
return Id;
1031+
}
10261032
};
10271033

10281034
struct FrameStat {

llvm/lib/ProfileData/MemProfReader.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -584,9 +584,7 @@ Error RawMemProfReader::symbolizeAndFilterStackFrames(
584584
GuidToSymbolName.insert({Guid, CanonicalName.str()});
585585
}
586586

587-
const FrameId Hash = F.hash();
588-
MemProfData.Frames.insert({Hash, F});
589-
SymbolizedFrame[VAddr].push_back(Hash);
587+
SymbolizedFrame[VAddr].push_back(MemProfData.addFrame(F));
590588
}
591589
}
592590

@@ -769,11 +767,8 @@ void YAMLMemProfReader::parse(StringRef YAMLData) {
769767
auto AddCallStack = [&](ArrayRef<Frame> CallStack) -> CallStackId {
770768
SmallVector<FrameId> IndexedCallStack;
771769
IndexedCallStack.reserve(CallStack.size());
772-
for (const Frame &F : CallStack) {
773-
FrameId Id = F.hash();
774-
MemProfData.Frames.try_emplace(Id, F);
775-
IndexedCallStack.push_back(Id);
776-
}
770+
for (const Frame &F : CallStack)
771+
IndexedCallStack.push_back(MemProfData.addFrame(F));
777772
CallStackId CSId = hashCallStack(IndexedCallStack);
778773
MemProfData.CallStacks.try_emplace(CSId, std::move(IndexedCallStack));
779774
return CSId;

llvm/unittests/ProfileData/MemProfTest.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,8 @@ TEST(MemProf, BaseMemProfReader) {
430430
/*Column=*/5, /*IsInlineFrame=*/true);
431431
Frame F2(/*Hash=*/IndexedMemProfRecord::getGUID("bar"), /*LineOffset=*/10,
432432
/*Column=*/2, /*IsInlineFrame=*/false);
433-
MemProfData.Frames.insert({F1.hash(), F1});
434-
MemProfData.Frames.insert({F2.hash(), F2});
433+
MemProfData.addFrame(F1);
434+
MemProfData.addFrame(F2);
435435

436436
llvm::SmallVector<FrameId> CallStack{F1.hash(), F2.hash()};
437437
CallStackId CSId = hashCallStack(CallStack);
@@ -466,8 +466,8 @@ TEST(MemProf, BaseMemProfReaderWithCSIdMap) {
466466
/*Column=*/5, /*IsInlineFrame=*/true);
467467
Frame F2(/*Hash=*/IndexedMemProfRecord::getGUID("bar"), /*LineOffset=*/10,
468468
/*Column=*/2, /*IsInlineFrame=*/false);
469-
MemProfData.Frames.insert({F1.hash(), F1});
470-
MemProfData.Frames.insert({F2.hash(), F2});
469+
MemProfData.addFrame(F1);
470+
MemProfData.addFrame(F2);
471471

472472
llvm::SmallVector<FrameId> CallStack = {F1.hash(), F2.hash()};
473473
CallStackId CSId = hashCallStack(CallStack);

0 commit comments

Comments
 (0)