diff options
Diffstat (limited to 'include/llvm/ProfileData/SampleProfWriter.h')
-rw-r--r-- | include/llvm/ProfileData/SampleProfWriter.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/include/llvm/ProfileData/SampleProfWriter.h b/include/llvm/ProfileData/SampleProfWriter.h index 029dd2ebacb07..f6f2e2702e316 100644 --- a/include/llvm/ProfileData/SampleProfWriter.h +++ b/include/llvm/ProfileData/SampleProfWriter.h @@ -15,6 +15,7 @@ #include "llvm/ADT/MapVector.h" #include "llvm/ADT/StringRef.h" +#include "llvm/ProfileData/ProfileCommon.h" #include "llvm/ProfileData/SampleProf.h" #include "llvm/Support/ErrorOr.h" #include "llvm/Support/FileSystem.h" @@ -31,10 +32,10 @@ class SampleProfileWriter { public: virtual ~SampleProfileWriter() {} - /// Write sample profiles in \p S for function \p FName. + /// Write sample profiles in \p S. /// /// \returns status code of the file update operation. - virtual std::error_code write(StringRef FName, const FunctionSamples &S) = 0; + virtual std::error_code write(const FunctionSamples &S) = 0; /// Write all the sample profiles in the given map of samples. /// @@ -42,11 +43,9 @@ public: std::error_code write(const StringMap<FunctionSamples> &ProfileMap) { if (std::error_code EC = writeHeader(ProfileMap)) return EC; - for (const auto &I : ProfileMap) { - StringRef FName = I.first(); const FunctionSamples &Profile = I.second; - if (std::error_code EC = write(FName, Profile)) + if (std::error_code EC = write(Profile)) return EC; } return sampleprof_error::success; @@ -75,12 +74,18 @@ protected: /// \brief Output stream where to emit the profile to. std::unique_ptr<raw_ostream> OutputStream; + + /// \brief Profile summary. + std::unique_ptr<ProfileSummary> Summary; + + /// \brief Compute summary for this profile. + void computeSummary(const StringMap<FunctionSamples> &ProfileMap); }; /// \brief Sample-based profile writer (text format). class SampleProfileWriterText : public SampleProfileWriter { public: - std::error_code write(StringRef FName, const FunctionSamples &S) override; + std::error_code write(const FunctionSamples &S) override; protected: SampleProfileWriterText(std::unique_ptr<raw_ostream> &OS) @@ -105,7 +110,7 @@ private: /// \brief Sample-based profile writer (binary format). class SampleProfileWriterBinary : public SampleProfileWriter { public: - std::error_code write(StringRef F, const FunctionSamples &S) override; + std::error_code write(const FunctionSamples &S) override; protected: SampleProfileWriterBinary(std::unique_ptr<raw_ostream> &OS) @@ -113,8 +118,9 @@ protected: std::error_code writeHeader(const StringMap<FunctionSamples> &ProfileMap) override; + std::error_code writeSummary(); std::error_code writeNameIdx(StringRef FName); - std::error_code writeBody(StringRef FName, const FunctionSamples &S); + std::error_code writeBody(const FunctionSamples &S); private: void addName(StringRef FName); |