From 9040dd469d61f59235ba5d2ef2c05e661159f877 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 11 Dec 2024 17:58:23 -0800 Subject: [memprof] Improve the way we express Frames in YAML (#119629) This patch does two things: - During deserialization, we accept a function name for Frame as an alternative to the usual GUID expressed as a hexadecimal number. - During serialization, we print a GUID of Frame as a 16-digit hexadecimal number prefixed with 0x in the usual way. (Without this patch, we print a decimal number, which is not customary.) The patch uses a machinery called "normalization" in YAML I/O, which lets us serialize and deserialize into an alternative data structure. For our use case, we have an alternative Frame data structure, which is identical to "struct Frame" except that Function is of type GUIDHex64 instead of GlobalValue::GUID. This alternative type supports the two bullet points above without modifying "struct Frame" at all. --- llvm/unittests/ProfileData/MemProfTest.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'llvm/unittests/ProfileData/MemProfTest.cpp') diff --git a/llvm/unittests/ProfileData/MemProfTest.cpp b/llvm/unittests/ProfileData/MemProfTest.cpp index 456b093..7dac0eb 100644 --- a/llvm/unittests/ProfileData/MemProfTest.cpp +++ b/llvm/unittests/ProfileData/MemProfTest.cpp @@ -804,11 +804,11 @@ template std::string serializeInYAML(T &Val) { } TEST(MemProf, YAMLWriterFrame) { - Frame F(11, 22, 33, true); + Frame F(0x0123456789abcdefULL, 22, 33, true); std::string Out = serializeInYAML(F); EXPECT_EQ(Out, R"YAML(--- -{ Function: 11, LineOffset: 22, Column: 33, IsInlineFrame: true } +{ Function: 0x0123456789abcdef, LineOffset: 22, Column: 33, IsInlineFrame: true } ... )YAML"); } -- cgit v1.1