@@ -39,9 +39,8 @@ using namespace llvm;
39
39
// A struct to define how the data stream should be patched. For Indexed
40
40
// profiling, only uint64_t data type is needed.
41
41
struct PatchItem {
42
- uint64_t Pos; // Where to patch.
43
- uint64_t *D; // Pointer to an array of source data.
44
- int N; // Number of elements in \c D array.
42
+ uint64_t Pos; // Where to patch.
43
+ ArrayRef<uint64_t > D; // An array of source data.
45
44
};
46
45
47
46
namespace llvm {
@@ -71,8 +70,8 @@ class ProfOStream {
71
70
const uint64_t LastPos = FDOStream.tell ();
72
71
for (const auto &K : P) {
73
72
FDOStream.seek (K.Pos );
74
- for (int I = 0 ; I < K. N ; I++ )
75
- write (K. D [I] );
73
+ for (uint64_t Elem : K. D )
74
+ write (Elem );
76
75
}
77
76
// Reset the stream to the last position after patching so that users
78
77
// don't accidentally overwrite data. This makes it consistent with
@@ -82,7 +81,7 @@ class ProfOStream {
82
81
raw_string_ostream &SOStream = static_cast <raw_string_ostream &>(OS);
83
82
std::string &Data = SOStream.str (); // with flush
84
83
for (const auto &K : P) {
85
- for (int I = 0 ; I < K.N ; I++) {
84
+ for (int I = 0 , E = K.D . size (); I != E ; I++) {
86
85
uint64_t Bytes =
87
86
endian::byte_swap<uint64_t , llvm::endianness::little>(K.D [I]);
88
87
Data.replace (K.Pos + I * sizeof (uint64_t ), sizeof (uint64_t ),
@@ -612,7 +611,7 @@ static Error writeMemProfV0(ProfOStream &OS,
612
611
uint64_t FrameTableOffset = writeMemProfFrames (OS, MemProfData.Frames );
613
612
614
613
uint64_t Header[] = {RecordTableOffset, FramePayloadOffset, FrameTableOffset};
615
- OS.patch ({{HeaderUpdatePos, Header, std::size (Header) }});
614
+ OS.patch ({{HeaderUpdatePos, Header}});
616
615
617
616
return Error::success ();
618
617
}
@@ -647,7 +646,7 @@ static Error writeMemProfV1(ProfOStream &OS,
647
646
uint64_t FrameTableOffset = writeMemProfFrames (OS, MemProfData.Frames );
648
647
649
648
uint64_t Header[] = {RecordTableOffset, FramePayloadOffset, FrameTableOffset};
650
- OS.patch ({{HeaderUpdatePos, Header, std::size (Header) }});
649
+ OS.patch ({{HeaderUpdatePos, Header}});
651
650
652
651
return Error::success ();
653
652
}
@@ -697,7 +696,7 @@ static Error writeMemProfV2(ProfOStream &OS,
697
696
RecordTableOffset, FramePayloadOffset, FrameTableOffset,
698
697
CallStackPayloadOffset, CallStackTableOffset,
699
698
};
700
- OS.patch ({{HeaderUpdatePos, Header, std::size (Header) }});
699
+ OS.patch ({{HeaderUpdatePos, Header}});
701
700
702
701
return Error::success ();
703
702
}
@@ -751,7 +750,7 @@ static Error writeMemProfV3(ProfOStream &OS,
751
750
RecordPayloadOffset,
752
751
RecordTableOffset,
753
752
};
754
- OS.patch ({{HeaderUpdatePos, Header, std::size (Header) }});
753
+ OS.patch ({{HeaderUpdatePos, Header}});
755
754
756
755
return Error::success ();
757
756
}
@@ -989,12 +988,14 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) {
989
988
990
989
PatchItem PatchItems[] = {
991
990
// Patch the Header fields
992
- {BackPatchStartOffset, HeaderOffsets. data (), ( int )HeaderOffsets. size () },
991
+ {BackPatchStartOffset, HeaderOffsets},
993
992
// Patch the summary data.
994
- {SummaryOffset, reinterpret_cast <uint64_t *>(TheSummary.get ()),
995
- (int )(SummarySize / sizeof (uint64_t ))},
996
- {CSSummaryOffset, reinterpret_cast <uint64_t *>(TheCSSummary.get ()),
997
- (int )CSSummarySize}};
993
+ {SummaryOffset,
994
+ ArrayRef<uint64_t >(reinterpret_cast <uint64_t *>(TheSummary.get ()),
995
+ SummarySize / sizeof (uint64_t ))},
996
+ {CSSummaryOffset,
997
+ ArrayRef<uint64_t >(reinterpret_cast <uint64_t *>(TheCSSummary.get ()),
998
+ CSSummarySize)}};
998
999
999
1000
OS.patch (PatchItems);
1000
1001
0 commit comments