[compiler-rt] 548aa90 - [NFC][sanitizer] Lazy init in StackDepotReverseMap
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 30 19:27:05 PDT 2021
Author: Vitaly Buka
Date: 2021-09-30T19:26:34-07:00
New Revision: 548aa9022ee79a95a07b99a88df28cee6cb0e16d
URL: https://github.com/llvm/llvm-project/commit/548aa9022ee79a95a07b99a88df28cee6cb0e16d
DIFF: https://github.com/llvm/llvm-project/commit/548aa9022ee79a95a07b99a88df28cee6cb0e16d.diff
LOG: [NFC][sanitizer] Lazy init in StackDepotReverseMap
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp
compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h
Removed:
################################################################################
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp
index 9215867edd65c..c71b0a17496a2 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp
@@ -125,7 +125,9 @@ bool StackDepotReverseMap::IdDescPair::IdComparator(
return a.id < b.id;
}
-StackDepotReverseMap::StackDepotReverseMap() {
+void StackDepotReverseMap::Init() const {
+ if (LIKELY(map_.capacity()))
+ return;
map_.reserve(StackDepotGetStats().n_uniq_ids + 100);
for (int idx = 0; idx < StackDepot::kTabSize; idx++) {
atomic_uintptr_t *p = &theDepot.tab[idx];
@@ -140,6 +142,7 @@ StackDepotReverseMap::StackDepotReverseMap() {
}
StackTrace StackDepotReverseMap::Get(u32 id) const {
+ Init();
if (!map_.size())
return StackTrace();
IdDescPair pair = {id, nullptr};
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h b/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h
index d4c2ee3583511..6f79fffeea8a4 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h
@@ -49,7 +49,7 @@ void StackDepotPrintAll();
// which were stored before it was instantiated.
class StackDepotReverseMap {
public:
- StackDepotReverseMap();
+ StackDepotReverseMap() = default;
StackTrace Get(u32 id) const;
private:
@@ -60,7 +60,9 @@ class StackDepotReverseMap {
static bool IdComparator(const IdDescPair &a, const IdDescPair &b);
};
- InternalMmapVector<IdDescPair> map_;
+ void Init() const;
+
+ mutable InternalMmapVector<IdDescPair> map_;
// Disallow evil constructors.
StackDepotReverseMap(const StackDepotReverseMap&);
More information about the llvm-commits
mailing list