[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