diff options
author | Kazu Hirata <kazu@google.com> | 2024-12-19 12:20:25 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-19 12:20:25 -0800 |
commit | 10d054e95413f0e98e4aeed9dbd4605f6f03b3fa (patch) | |
tree | 6115c42ce199608e7f9a7afdfd822e3f0669592b /llvm/unittests/ProfileData/MemProfTest.cpp | |
parent | e3b571e632855386908c5cea310f5056d31d6df8 (diff) | |
download | llvm-10d054e95413f0e98e4aeed9dbd4605f6f03b3fa.zip llvm-10d054e95413f0e98e4aeed9dbd4605f6f03b3fa.tar.gz llvm-10d054e95413f0e98e4aeed9dbd4605f6f03b3fa.tar.bz2 |
[memprof] Introduce IndexedCallstackIdConveter (NFC) (#120540)
This patch introduces IndexedCallstackIdConveter as a convenience
wrapper around FrameIdConverter and CallStackIdConverter just for
tests.
With the new wrapper, we get to replace idioms like:
FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv(
MemProfData.Frames);
CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv(
MemProfData.CallStacks, FrameIdConv);
with:
IndexedCallstackIdConveter CSIdConv(MemProfData);
Unfortunately, this exact pattern occurs in tests only; the
combinations of the frame ID converter and call stack ID converter are
diverse in production code.
Diffstat (limited to 'llvm/unittests/ProfileData/MemProfTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/MemProfTest.cpp | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/llvm/unittests/ProfileData/MemProfTest.cpp b/llvm/unittests/ProfileData/MemProfTest.cpp index 2eb85d5..1fe9af5 100644 --- a/llvm/unittests/ProfileData/MemProfTest.cpp +++ b/llvm/unittests/ProfileData/MemProfTest.cpp @@ -501,16 +501,13 @@ TEST(MemProf, IndexedMemProfRecordToMemProfRecord) { IndexedRecord.CallSiteIds.push_back(CS3Id); IndexedRecord.CallSiteIds.push_back(CS4Id); - FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv( - MemProfData.Frames); - CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv( - MemProfData.CallStacks, FrameIdConv); + IndexedCallstackIdConveter CSIdConv(MemProfData); MemProfRecord Record = IndexedRecord.toMemProfRecord(CSIdConv); // Make sure that all lookups are successful. - ASSERT_EQ(FrameIdConv.LastUnmappedId, std::nullopt); - ASSERT_EQ(CSIdConv.LastUnmappedId, std::nullopt); + ASSERT_EQ(CSIdConv.FrameIdConv.LastUnmappedId, std::nullopt); + ASSERT_EQ(CSIdConv.CSIdConv.LastUnmappedId, std::nullopt); // Verify the contents of Record. ASSERT_THAT(Record.AllocSites, SizeIs(2)); @@ -540,17 +537,14 @@ TEST(MemProf, MissingCallStackId) { // Create empty maps. IndexedMemProfData MemProfData; - FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv( - MemProfData.Frames); - CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv( - MemProfData.CallStacks, FrameIdConv); + IndexedCallstackIdConveter CSIdConv(MemProfData); // We are only interested in errors, not the return value. (void)IndexedMR.toMemProfRecord(CSIdConv); - ASSERT_TRUE(CSIdConv.LastUnmappedId.has_value()); - EXPECT_EQ(*CSIdConv.LastUnmappedId, 0xdeadbeefU); - EXPECT_EQ(FrameIdConv.LastUnmappedId, std::nullopt); + ASSERT_TRUE(CSIdConv.CSIdConv.LastUnmappedId.has_value()); + EXPECT_EQ(*CSIdConv.CSIdConv.LastUnmappedId, 0xdeadbeefU); + EXPECT_EQ(CSIdConv.FrameIdConv.LastUnmappedId, std::nullopt); } TEST(MemProf, MissingFrameId) { @@ -561,17 +555,14 @@ TEST(MemProf, MissingFrameId) { IndexedMemProfRecord IndexedMR; IndexedMR.AllocSites.emplace_back(CSId, makePartialMIB(), getHotColdSchema()); - FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv( - MemProfData.Frames); - CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv( - MemProfData.CallStacks, FrameIdConv); + IndexedCallstackIdConveter CSIdConv(MemProfData); // We are only interested in errors, not the return value. (void)IndexedMR.toMemProfRecord(CSIdConv); - EXPECT_EQ(CSIdConv.LastUnmappedId, std::nullopt); - ASSERT_TRUE(FrameIdConv.LastUnmappedId.has_value()); - EXPECT_EQ(*FrameIdConv.LastUnmappedId, 3U); + EXPECT_EQ(CSIdConv.CSIdConv.LastUnmappedId, std::nullopt); + ASSERT_TRUE(CSIdConv.FrameIdConv.LastUnmappedId.has_value()); + EXPECT_EQ(*CSIdConv.FrameIdConv.LastUnmappedId, 3U); } // Verify CallStackRadixTreeBuilder can handle empty inputs. @@ -714,10 +705,7 @@ HeapProfileRecords: const auto &[GUID, IndexedRecord] = MemProfData.Records.front(); EXPECT_EQ(GUID, 0xdeadbeef12345678ULL); - FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv( - MemProfData.Frames); - CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv( - MemProfData.CallStacks, FrameIdConv); + IndexedCallstackIdConveter CSIdConv(MemProfData); MemProfRecord Record = IndexedRecord.toMemProfRecord(CSIdConv); ASSERT_THAT(Record.AllocSites, SizeIs(2)); @@ -760,10 +748,7 @@ HeapProfileRecords: const auto &[GUID, IndexedRecord] = MemProfData.Records.front(); EXPECT_EQ(GUID, IndexedMemProfRecord::getGUID("_Z3fooi")); - FrameIdConverter<decltype(MemProfData.Frames)> FrameIdConv( - MemProfData.Frames); - CallStackIdConverter<decltype(MemProfData.CallStacks)> CSIdConv( - MemProfData.CallStacks, FrameIdConv); + IndexedCallstackIdConveter CSIdConv(MemProfData); MemProfRecord Record = IndexedRecord.toMemProfRecord(CSIdConv); ASSERT_THAT(Record.AllocSites, SizeIs(1)); |