@@ -660,6 +660,37 @@ uint64_t InstrProfWriter::writeHeader(const IndexedInstrProf::Header &Header,
660
660
return BackPatchStartOffset;
661
661
}
662
662
663
+ Error InstrProfWriter::writeVTableNames (ProfOStream &OS) {
664
+ std::vector<std::string> VTableNameStrs;
665
+ for (StringRef VTableName : VTableNames.keys ())
666
+ VTableNameStrs.push_back (VTableName.str ());
667
+
668
+ std::string CompressedVTableNames;
669
+ if (!VTableNameStrs.empty ())
670
+ if (Error E = collectGlobalObjectNameStrings (
671
+ VTableNameStrs, compression::zlib::isAvailable (),
672
+ CompressedVTableNames))
673
+ return E;
674
+
675
+ const uint64_t CompressedStringLen = CompressedVTableNames.length ();
676
+
677
+ // Record the length of compressed string.
678
+ OS.write (CompressedStringLen);
679
+
680
+ // Write the chars in compressed strings.
681
+ for (auto &c : CompressedVTableNames)
682
+ OS.writeByte (static_cast <uint8_t >(c));
683
+
684
+ // Pad up to a multiple of 8.
685
+ // InstrProfReader could read bytes according to 'CompressedStringLen'.
686
+ const uint64_t PaddedLength = alignTo (CompressedStringLen, 8 );
687
+
688
+ for (uint64_t K = CompressedStringLen; K < PaddedLength; K++)
689
+ OS.writeByte (0 );
690
+
691
+ return Error::success ();
692
+ }
693
+
663
694
Error InstrProfWriter::writeImpl (ProfOStream &OS) {
664
695
using namespace IndexedInstrProf ;
665
696
using namespace support ;
@@ -775,34 +806,9 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) {
775
806
776
807
uint64_t VTableNamesSectionStart = OS.tell ();
777
808
778
- if (!WritePrevVersion) {
779
- std::vector<std::string> VTableNameStrs;
780
- for (StringRef VTableName : VTableNames.keys ())
781
- VTableNameStrs.push_back (VTableName.str ());
782
-
783
- std::string CompressedVTableNames;
784
- if (!VTableNameStrs.empty ())
785
- if (Error E = collectGlobalObjectNameStrings (
786
- VTableNameStrs, compression::zlib::isAvailable (),
787
- CompressedVTableNames))
788
- return E;
789
-
790
- const uint64_t CompressedStringLen = CompressedVTableNames.length ();
791
-
792
- // Record the length of compressed string.
793
- OS.write (CompressedStringLen);
794
-
795
- // Write the chars in compressed strings.
796
- for (auto &c : CompressedVTableNames)
797
- OS.writeByte (static_cast <uint8_t >(c));
798
-
799
- // Pad up to a multiple of 8.
800
- // InstrProfReader could read bytes according to 'CompressedStringLen'.
801
- const uint64_t PaddedLength = alignTo (CompressedStringLen, 8 );
802
-
803
- for (uint64_t K = CompressedStringLen; K < PaddedLength; K++)
804
- OS.writeByte (0 );
805
- }
809
+ if (!WritePrevVersion)
810
+ if (Error E = writeVTableNames (OS))
811
+ return E;
806
812
807
813
uint64_t TemporalProfTracesSectionStart = 0 ;
808
814
if (static_cast <bool >(ProfileKind & InstrProfKind::TemporalProfile)) {
0 commit comments