mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 08:29:43 +00:00
[PGO] Refactor string writer code
For readability and code sharing. (Adapted from Suggestions by Vedant). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256784 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1c201e9766
commit
d8ecf86295
@ -173,26 +173,32 @@ int collectPGOFuncNameStrings(const std::vector<std::string> &NameStrs,
|
||||
|
||||
unsigned EncLen = encodeULEB128(UncompressedNameStrings.length(), P);
|
||||
P += EncLen;
|
||||
if (!doCompression) {
|
||||
EncLen = encodeULEB128(0, P);
|
||||
|
||||
auto WriteStringToResult = [&](size_t CompressedLen,
|
||||
const std::string &InputStr) {
|
||||
EncLen = encodeULEB128(CompressedLen, P);
|
||||
P += EncLen;
|
||||
Result.append(reinterpret_cast<char *>(&Header[0]), P - &Header[0]);
|
||||
Result += UncompressedNameStrings;
|
||||
char *HeaderStr = reinterpret_cast<char *>(&Header[0]);
|
||||
unsigned HeaderLen = P - &Header[0];
|
||||
Result.append(HeaderStr, HeaderLen);
|
||||
Result += InputStr;
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
if (!doCompression)
|
||||
return WriteStringToResult(0, UncompressedNameStrings);
|
||||
|
||||
SmallVector<char, 128> CompressedNameStrings;
|
||||
zlib::Status Success =
|
||||
zlib::compress(StringRef(UncompressedNameStrings), CompressedNameStrings,
|
||||
zlib::BestSizeCompression);
|
||||
assert(Success == zlib::StatusOK);
|
||||
|
||||
if (Success != zlib::StatusOK)
|
||||
return 1;
|
||||
EncLen = encodeULEB128(CompressedNameStrings.size(), P);
|
||||
P += EncLen;
|
||||
Result.append(reinterpret_cast<char *>(&Header[0]), P - &Header[0]);
|
||||
Result +=
|
||||
std::string(CompressedNameStrings.data(), CompressedNameStrings.size());
|
||||
return 0;
|
||||
|
||||
return WriteStringToResult(
|
||||
CompressedNameStrings.size(),
|
||||
std::string(CompressedNameStrings.data(), CompressedNameStrings.size()));
|
||||
}
|
||||
|
||||
StringRef getPGOFuncNameInitializer(GlobalVariable *NameVar) {
|
||||
|
Loading…
Reference in New Issue
Block a user