From 08a4d0b36fd21d98364c6a8ca6bff98a22af43ab Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Wed, 23 Apr 2014 18:50:16 +0000 Subject: ProfileData: Avoid unnecessary copies of CounterData We're currently copying CounterData from InstrProfWriter into the OnDiskHashTable, even though we don't need to, and then carelessly leaking those copies. A const pointer is much better here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207009 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/ProfileData/InstrProfWriter.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib/ProfileData') diff --git a/lib/ProfileData/InstrProfWriter.cpp b/lib/ProfileData/InstrProfWriter.cpp index 83d03d6a28..83c41d93bb 100644 --- a/lib/ProfileData/InstrProfWriter.cpp +++ b/lib/ProfileData/InstrProfWriter.cpp @@ -27,8 +27,8 @@ public: typedef StringRef key_type; typedef StringRef key_type_ref; - typedef InstrProfWriter::CounterData data_type; - typedef const InstrProfWriter::CounterData &data_type_ref; + typedef const InstrProfWriter::CounterData *const data_type; + typedef const InstrProfWriter::CounterData *const data_type_ref; typedef uint64_t hash_value_type; typedef uint64_t offset_type; @@ -45,7 +45,7 @@ public: offset_type N = K.size(); LE.write(N); - offset_type M = (1 + V.Counts.size()) * sizeof(uint64_t); + offset_type M = (1 + V->Counts.size()) * sizeof(uint64_t); LE.write(M); return std::make_pair(N, M); @@ -59,8 +59,8 @@ public: offset_type) { using namespace llvm::support; endian::Writer LE(Out); - LE.write(V.Hash); - for (uint64_t I : V.Counts) + LE.write(V->Hash); + for (uint64_t I : V->Counts) LE.write(I); } }; @@ -100,7 +100,7 @@ void InstrProfWriter::write(raw_fd_ostream &OS) { // Populate the hash table generator. for (const auto &I : FunctionData) { - Generator.insert(I.getKey(), I.getValue()); + Generator.insert(I.getKey(), &I.getValue()); if (I.getValue().Counts[0] > MaxFunctionCount) MaxFunctionCount = I.getValue().Counts[0]; } -- cgit v1.2.3