[PATCH] D113059: [llvm-profgen] Refactor the code of getHashCode
Lei Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 2 14:44:23 PDT 2021
wlei created this revision.
Herald added subscribers: hoy, wenlei, lxfind.
wlei requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D113059
Files:
llvm/tools/llvm-profgen/PerfReader.cpp
llvm/tools/llvm-profgen/PerfReader.h
Index: llvm/tools/llvm-profgen/PerfReader.h
===================================================================
--- llvm/tools/llvm-profgen/PerfReader.h
+++ llvm/tools/llvm-profgen/PerfReader.h
@@ -312,12 +312,9 @@
// Base class for sample counter key with context
struct ContextKey {
- uint64_t HashCode = 0;
virtual ~ContextKey() = default;
- uint64_t getHashCode() const { return HashCode; }
- virtual bool isEqual(const ContextKey *K) const {
- return HashCode == K->HashCode;
- };
+ virtual uint64_t getHashCode() = 0;
+ virtual bool isEqual(const ContextKey *K) const = 0;
// Utilities for LLVM-style RTTI
enum ContextKind { CK_StringBased, CK_ProbeBased };
@@ -341,7 +338,9 @@
return Context == Other->Context;
}
- void genHashCode() { HashCode = hash_value(SampleContextFrames(Context)); }
+ uint64_t getHashCode() override {
+ return hash_value(SampleContextFrames(Context));
+ }
};
// Probe based context key as the intermediate key of context
@@ -364,7 +363,8 @@
O->Probes.end());
}
- void genHashCode() {
+ uint64_t getHashCode() override {
+ uint64_t HashCode = 0;
for (const auto *P : Probes) {
HashCode = hash_combine(HashCode, P);
}
@@ -372,6 +372,7 @@
// Avoid zero value of HashCode when it's an empty list
HashCode = 1;
}
+ return HashCode;
}
};
Index: llvm/tools/llvm-profgen/PerfReader.cpp
===================================================================
--- llvm/tools/llvm-profgen/PerfReader.cpp
+++ llvm/tools/llvm-profgen/PerfReader.cpp
@@ -129,7 +129,6 @@
KeyStr->Context = Binary->getExpandedContext(Stack, KeyStr->WasLeafInlined);
if (KeyStr->Context.empty())
return nullptr;
- KeyStr->genHashCode();
return KeyStr;
}
@@ -143,8 +142,6 @@
ProbeBasedKey->Probes);
CSProfileGenerator::trimContext<const MCDecodedPseudoProbe *>(
ProbeBasedKey->Probes);
-
- ProbeBasedKey->genHashCode();
return ProbeBasedKey;
}
@@ -802,7 +799,6 @@
SampleContext::createCtxVectorFromStr(*I.first, Key->Context);
TraceIt.advance();
}
- Key->genHashCode();
auto Ret =
SampleCounters.emplace(Hashable<ContextKey>(Key), SampleCounter());
readSampleCounters(TraceIt, Ret.first->second);
@@ -851,7 +847,6 @@
"Sample counter map should be empty before raw profile generation");
std::shared_ptr<StringBasedCtxKey> Key =
std::make_shared<StringBasedCtxKey>();
- Key->genHashCode();
SampleCounters.emplace(Hashable<ContextKey>(Key), SampleCounter());
for (const auto &Item : AggregatedSamples) {
const PerfSample *Sample = Item.first.getPtr();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113059.384243.patch
Type: text/x-patch
Size: 2680 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211102/6a0c3e80/attachment.bin>
More information about the llvm-commits
mailing list