Lines Matching +full:second +full:- +full:order

1 //===- SampleProfWriter.cpp - Write LLVM sample profile data --------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
18 //===----------------------------------------------------------------------===//
41 #define DEBUG_TYPE "llvm-profdata"
81 size_t NumToRemove = ProfileMap.size() - NewSize; in Erase()
87 llvm::drop_begin(SortedFunctions, SortedFunctions.size() - NumToRemove)) in Erase()
89 SortedFunctions.resize(SortedFunctions.size() - NumToRemove); in Erase()
124 Strategy->Erase(TotalSize); in writeWithSizeLimitInternal()
132 OutputStream->write(StringBuffer.data(), StringBuffer.size()); in writeWithSizeLimitInternal()
147 if (std::error_code EC = writeSample(*I.second)) in writeFuncProfiles()
169 uint64_t SectionStart = OutputStream->tell(); in markSectionStart()
183 static_cast<raw_string_ostream *>(LocalBufStream.get())->str(); in compressAndOutput()
211 SecHdrTable.push_back({Type, Entry.Flags, SectionStart - FileStart, in addNewSection()
212 OutputStream->tell() - SectionStart, LayoutIdx}); in addNewSection()
251 encodeULEB128(Ret->second, *OutputStream); in writeCSNameIdx()
257 uint64_t Offset = OutputStream->tell(); in writeSample()
259 FuncOffsetTable[Context] = Offset - SecLBRProfileStart; in writeSample()
281 // can help profile-guided importing for ThinLTO. in writeFuncOffsetTable()
285 if (std::error_code EC = WriteItem(Entry.first, Entry.second)) in writeFuncOffsetTable()
291 if (std::error_code EC = WriteItem(Entry.first, Entry.second)) in writeFuncOffsetTable()
316 NumCallsites += J.second.size(); in writeFuncMetadata()
319 for (const auto &FS : J.second) { in writeFuncMetadata()
323 if (std::error_code EC = writeFuncMetadata(FS.second)) in writeFuncMetadata()
338 if (std::error_code EC = writeFuncMetadata(Entry.second)) in writeFuncMetadata()
365 addContext(I.second.getContext()); in writeNameTableSection()
366 addNames(I.second); in writeNameTableSection()
417 if (ProfSymList && ProfSymList->size() > 0) in writeProfileSymbolListSection()
418 if (std::error_code EC = ProfSymList->write(*OutputStream)) in writeProfileSymbolListSection()
427 if (Type == SecProfileSymbolList && ProfSymList && ProfSymList->toCompress()) in writeOneSection()
457 SecLBRProfileStart = OutputStream->tell(); in writeOneSection()
510 if (I.second.getCallsiteSamples().size()) in splitProfileMapToTwo()
511 ContextProfileMap.insert({I.first, I.second}); in splitProfileMapToTwo()
513 NoContextProfileMap.insert({I.first, I.second}); in splitProfileMapToTwo()
582 LineLocation Loc = I->first; in writeSample()
583 const SampleRecord &Sample = I->second; in writeSample()
593 OS << " " << J.first << ":" << J.second; in writeSample()
602 for (const auto &FS : I->second) { in writeSample()
603 LineLocation Loc = I->first; in writeSample()
604 const FunctionSamples &CalleeSamples = FS.second; in writeSample()
613 Indent -= 1; in writeSample()
641 encodeULEB128(Ret->second, *OutputStream); in writeNameIdx()
657 const SampleRecord &Sample = I.second; in addNames()
664 for (const auto &FS : J.second) { in addNames()
665 const FunctionSamples &CalleeSamples = FS.second; in addNames()
729 addContext(I.second.getContext()); in writeHeader()
730 addNames(I.second); in writeHeader()
750 SecHdrTableOffset = OutputStream->tell(); in allocSecHdrTable()
752 Writer.write(static_cast<uint64_t>(-1)); in allocSecHdrTable()
753 Writer.write(static_cast<uint64_t>(-1)); in allocSecHdrTable()
754 Writer.write(static_cast<uint64_t>(-1)); in allocSecHdrTable()
755 Writer.write(static_cast<uint64_t>(-1)); in allocSecHdrTable()
762 SmallVector<uint32_t, 16> IndexMap(SecHdrTable.size(), -1); in writeSecHdrTable()
767 // Write the section header table in the order specified in in writeSecHdrTable()
769 // order in which profile reader expect to read, so the section in writeSecHdrTable()
770 // header table should be written in the order in SectionHdrLayout. in writeSecHdrTable()
771 // Note that the section order in SecHdrTable may be different in writeSecHdrTable()
772 // from the order in SectionHdrLayout, for example, SecFuncOffsetTable in writeSecHdrTable()
773 // needs to be computed after SecLBRProfile (the order in SecHdrTable), in writeSecHdrTable()
774 // but it needs to be read before SecLBRProfile (the order in in writeSecHdrTable()
775 // SectionHdrLayout). So we use IndexMap above to switch the order. in writeSecHdrTable()
809 encodeULEB128(Summary->getTotalCount(), OS); in writeSummary()
810 encodeULEB128(Summary->getMaxCount(), OS); in writeSummary()
811 encodeULEB128(Summary->getMaxFunctionCount(), OS); in writeSummary()
812 encodeULEB128(Summary->getNumCounts(), OS); in writeSummary()
813 encodeULEB128(Summary->getNumFunctions(), OS); in writeSummary()
814 ArrayRef<ProfileSummaryEntry> Entries = Summary->getDetailedSummary(); in writeSummary()
834 const SampleRecord &Sample = I.second; in writeBody()
841 uint64_t CalleeSamples = J.second; in writeBody()
851 NumCallsites += J.second.size(); in writeBody()
854 for (const auto &FS : J.second) { in writeBody()
856 const FunctionSamples &CalleeSamples = FS.second; in writeBody()
866 /// Write samples of a top-level function to a binary file.
928 Writer->Format = Format; in create()