SampleRecord() : NumSamples(0), CallTargets() {}
/// Increment the number of samples for this record by \p S.
- /// Optionally scale sample count \p S by \p Weight.
///
/// Sample counts accumulate using saturating arithmetic, to avoid wrapping
/// around unsigned integers.
- void addSamples(uint64_t S, uint64_t Weight = 1) {
- if (Weight > 1)
- S = SaturatingMultiply(S, Weight);
+ void addSamples(uint64_t S) {
NumSamples = SaturatingAdd(NumSamples, S);
}
/// Add called function \p F with samples \p S.
- /// Optionally scale sample count \p S by \p Weight.
///
/// Sample counts accumulate using saturating arithmetic, to avoid wrapping
/// around unsigned integers.
- void addCalledTarget(StringRef F, uint64_t S, uint64_t Weight = 1) {
+ void addCalledTarget(StringRef F, uint64_t S) {
uint64_t &TargetSamples = CallTargets[F];
- if (Weight > 1)
- S = SaturatingMultiply(S, Weight);
TargetSamples = SaturatingAdd(TargetSamples, S);
}
const CallTargetMap &getCallTargets() const { return CallTargets; }
/// Merge the samples in \p Other into this record.
- /// Optionally scale sample counts by \p Weight.
- void merge(const SampleRecord &Other, uint64_t Weight = 1) {
- addSamples(Other.getSamples(), Weight);
+ void merge(const SampleRecord &Other) {
+ addSamples(Other.getSamples());
for (const auto &I : Other.getCallTargets())
- addCalledTarget(I.first(), I.second, Weight);
+ addCalledTarget(I.first(), I.second);
}
void print(raw_ostream &OS, unsigned Indent) const;
FunctionSamples() : TotalSamples(0), TotalHeadSamples(0) {}
void print(raw_ostream &OS = dbgs(), unsigned Indent = 0) const;
void dump() const;
- void addTotalSamples(uint64_t Num, uint64_t Weight = 1) {
- if (Weight > 1)
- Num = SaturatingMultiply(Num, Weight);
- TotalSamples += Num;
- }
- void addHeadSamples(uint64_t Num, uint64_t Weight = 1) {
- if (Weight > 1)
- Num = SaturatingMultiply(Num, Weight);
- TotalHeadSamples += Num;
- }
- void addBodySamples(uint32_t LineOffset, uint32_t Discriminator, uint64_t Num,
- uint64_t Weight = 1) {
- BodySamples[LineLocation(LineOffset, Discriminator)].addSamples(Num,
- Weight);
+ void addTotalSamples(uint64_t Num) { TotalSamples += Num; }
+ void addHeadSamples(uint64_t Num) { TotalHeadSamples += Num; }
+ void addBodySamples(uint32_t LineOffset, uint32_t Discriminator,
+ uint64_t Num) {
+ BodySamples[LineLocation(LineOffset, Discriminator)].addSamples(Num);
}
void addCalledTargetSamples(uint32_t LineOffset, uint32_t Discriminator,
- std::string FName, uint64_t Num,
- uint64_t Weight = 1) {
- BodySamples[LineLocation(LineOffset, Discriminator)].addCalledTarget(
- FName, Num, Weight);
+ std::string FName, uint64_t Num) {
+ BodySamples[LineLocation(LineOffset, Discriminator)].addCalledTarget(FName,
+ Num);
}
/// Return the number of samples collected at the given location.
}
/// Merge the samples in \p Other into this one.
- /// Optionally scale samples by \p Weight.
- void merge(const FunctionSamples &Other, uint64_t Weight = 1) {
- addTotalSamples(Other.getTotalSamples(), Weight);
- addHeadSamples(Other.getHeadSamples(), Weight);
+ void merge(const FunctionSamples &Other) {
+ addTotalSamples(Other.getTotalSamples());
+ addHeadSamples(Other.getHeadSamples());
for (const auto &I : Other.getBodySamples()) {
const LineLocation &Loc = I.first;
const SampleRecord &Rec = I.second;
- BodySamples[Loc].merge(Rec, Weight);
+ BodySamples[Loc].merge(Rec);
}
for (const auto &I : Other.getCallsiteSamples()) {
const CallsiteLocation &Loc = I.first;
const FunctionSamples &Rec = I.second;
- functionSamplesAt(Loc).merge(Rec, Weight);
+ functionSamplesAt(Loc).merge(Rec);
}
}