From: Serge Pavlov Date: Wed, 29 Mar 2023 05:11:12 +0000 (+0700) Subject: [symbolizer] Factor out conversion DILineInfo->JSON. NFC X-Git-Tag: upstream/17.0.6~13315 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=90025187f014c4699b9869428a06e683c1bac232;p=platform%2Fupstream%2Fllvm.git [symbolizer] Factor out conversion DILineInfo->JSON. NFC Move the conversion of DILineInfo to JSON into a separate function, so it can be used in other places too. This is a prerequisite patch for implementation of symbol+offset lookup. Differential Revision: https://reviews.llvm.org/D147112 --- diff --git a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp index 2d3b144..3104041 100644 --- a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp +++ b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp @@ -293,6 +293,24 @@ static json::Object toJSON(const Request &Request, StringRef ErrorMsg = "") { return Json; } +static json::Object toJSON(const DILineInfo &LineInfo) { + return json::Object( + {{"FunctionName", LineInfo.FunctionName != DILineInfo::BadString + ? LineInfo.FunctionName + : ""}, + {"StartFileName", LineInfo.StartFileName != DILineInfo::BadString + ? LineInfo.StartFileName + : ""}, + {"StartLine", LineInfo.StartLine}, + {"StartAddress", + LineInfo.StartAddress ? toHex(*LineInfo.StartAddress) : ""}, + {"FileName", + LineInfo.FileName != DILineInfo::BadString ? LineInfo.FileName : ""}, + {"Line", LineInfo.Line}, + {"Column", LineInfo.Column}, + {"Discriminator", LineInfo.Discriminator}}); +} + void JSONPrinter::print(const Request &Request, const DILineInfo &Info) { DIInliningInfo InliningInfo; InliningInfo.addFrame(Info); @@ -303,21 +321,7 @@ void JSONPrinter::print(const Request &Request, const DIInliningInfo &Info) { json::Array Array; for (uint32_t I = 0, N = Info.getNumberOfFrames(); I < N; ++I) { const DILineInfo &LineInfo = Info.getFrame(I); - json::Object Object( - {{"FunctionName", LineInfo.FunctionName != DILineInfo::BadString - ? LineInfo.FunctionName - : ""}, - {"StartFileName", LineInfo.StartFileName != DILineInfo::BadString - ? LineInfo.StartFileName - : ""}, - {"StartLine", LineInfo.StartLine}, - {"StartAddress", - LineInfo.StartAddress ? toHex(*LineInfo.StartAddress) : ""}, - {"FileName", - LineInfo.FileName != DILineInfo::BadString ? LineInfo.FileName : ""}, - {"Line", LineInfo.Line}, - {"Column", LineInfo.Column}, - {"Discriminator", LineInfo.Discriminator}}); + json::Object Object = toJSON(LineInfo); SourceCode SourceCode(LineInfo.FileName, LineInfo.Line, Config.SourceContextLines, LineInfo.Source); std::string FormattedSource;