[llvm] r258544 - [PGO] Remove use of static variable. /NFC
Vedant Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 22 15:10:07 PST 2016
Thanks!
> On Jan 22, 2016, at 12:25 PM, Xinliang David Li via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> Author: davidxl
> Date: Fri Jan 22 14:25:56 2016
> New Revision: 258544
>
> URL: http://llvm.org/viewvc/llvm-project?rev=258544&view=rev
> Log:
> [PGO] Remove use of static variable. /NFC
>
> Make the variable a member of the writer trait object owned
> now by the writer. Also use a different generator interface
> to pass the infoObject from the writer.
>
> Modified:
> llvm/trunk/include/llvm/ProfileData/InstrProfWriter.h
> llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
>
> Modified: llvm/trunk/include/llvm/ProfileData/InstrProfWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ProfileData/InstrProfWriter.h?rev=258544&r1=258543&r2=258544&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/ProfileData/InstrProfWriter.h (original)
> +++ llvm/trunk/include/llvm/ProfileData/InstrProfWriter.h Fri Jan 22 14:25:56 2016
> @@ -25,6 +25,8 @@ namespace llvm {
>
> /// Writer for instrumentation based profile data.
> class ProfOStream;
> +class InstrProfRecordWriterTrait;
> +
> class InstrProfWriter {
> public:
> typedef SmallDenseMap<uint64_t, InstrProfRecord, 1> ProfilingData;
> @@ -32,9 +34,12 @@ public:
> private:
> StringMap<ProfilingData> FunctionData;
> uint64_t MaxFunctionCount;
> + // Use raw pointer here for the incomplete type object.
> + InstrProfRecordWriterTrait *InfoObj;
>
> public:
> - InstrProfWriter() : MaxFunctionCount(0) {}
> + InstrProfWriter();
> + ~InstrProfWriter();
>
> /// Add function counts for the given function. If there are already counts
> /// for this function and the hash and number of counts match, each counter is
>
> Modified: llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProfWriter.cpp?rev=258544&r1=258543&r2=258544&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ProfileData/InstrProfWriter.cpp (original)
> +++ llvm/trunk/lib/ProfileData/InstrProfWriter.cpp Fri Jan 22 14:25:56 2016
> @@ -71,12 +71,8 @@ public:
> raw_ostream &OS;
> support::endian::Writer<support::little> LE;
> };
> -}
> -
> -namespace {
> -static support::endianness ValueProfDataEndianness = support::little;
>
> -class InstrProfRecordTrait {
> +class InstrProfRecordWriterTrait {
> public:
> typedef StringRef key_type;
> typedef StringRef key_type_ref;
> @@ -87,6 +83,9 @@ public:
> typedef uint64_t hash_value_type;
> typedef uint64_t offset_type;
>
> + support::endianness ValueProfDataEndianness;
> +
> + InstrProfRecordWriterTrait() : ValueProfDataEndianness(support::little) {}
> static hash_value_type ComputeHash(key_type_ref K) {
> return IndexedInstrProf::ComputeHash(K);
> }
> @@ -114,12 +113,11 @@ public:
> return std::make_pair(N, M);
> }
>
> - static void EmitKey(raw_ostream &Out, key_type_ref K, offset_type N){
> + void EmitKey(raw_ostream &Out, key_type_ref K, offset_type N) {
> Out.write(K.data(), N);
> }
>
> - static void EmitData(raw_ostream &Out, key_type_ref, data_type_ref V,
> - offset_type) {
> + void EmitData(raw_ostream &Out, key_type_ref, data_type_ref V, offset_type) {
> using namespace llvm::support;
> endian::Writer<little> LE(Out);
> for (const auto &ProfileData : *V) {
> @@ -141,10 +139,16 @@ public:
> };
> }
>
> +InstrProfWriter::InstrProfWriter()
> + : FunctionData(), MaxFunctionCount(0),
> + InfoObj(new InstrProfRecordWriterTrait()) {}
> +
> +InstrProfWriter::~InstrProfWriter() { delete InfoObj; }
> +
> // Internal interface for testing purpose only.
> void InstrProfWriter::setValueProfDataEndianness(
> support::endianness Endianness) {
> - ValueProfDataEndianness = Endianness;
> + InfoObj->ValueProfDataEndianness = Endianness;
> }
>
> std::error_code InstrProfWriter::addRecord(InstrProfRecord &&I,
> @@ -181,7 +185,7 @@ std::error_code InstrProfWriter::addReco
> }
>
> void InstrProfWriter::writeImpl(ProfOStream &OS) {
> - OnDiskChainedHashTableGenerator<InstrProfRecordTrait> Generator;
> + OnDiskChainedHashTableGenerator<InstrProfRecordWriterTrait> Generator;
> // Populate the hash table generator.
> for (const auto &I : FunctionData)
> Generator.insert(I.getKey(), &I.getValue());
> @@ -205,7 +209,7 @@ void InstrProfWriter::writeImpl(ProfOStr
> // Reserve the space for HashOffset field.
> OS.write(0);
> // Write the hash table.
> - uint64_t HashTableStart = Generator.Emit(OS.OS);
> + uint64_t HashTableStart = Generator.Emit(OS.OS, *InfoObj);
>
> // Now do the final patch:
> PatchItem PatchItems[1] = {{HashTableStartLoc, &HashTableStart, 1}};
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list