Index: base/trace_event/memory_usage_estimator.h |
diff --git a/base/trace_event/memory_usage_estimator.h b/base/trace_event/memory_usage_estimator.h |
index 174429fa975a54b5a804bff9792448c5fbe3dfb6..90c94aba931f445f402809a9d1f73623f8952712 100644 |
--- a/base/trace_event/memory_usage_estimator.h |
+++ b/base/trace_event/memory_usage_estimator.h |
@@ -22,6 +22,8 @@ |
#include <vector> |
#include "base/base_export.h" |
+#include "base/containers/flat_map.h" |
+#include "base/containers/flat_set.h" |
#include "base/containers/linked_list.h" |
#include "base/strings/string16.h" |
@@ -150,6 +152,12 @@ size_t EstimateMemoryUsage(const std::priority_queue<T, C>& queue); |
template <class T, class C> |
size_t EstimateMemoryUsage(const std::stack<T, C>& stack); |
+template <class T, class C> |
+size_t EstimateMemoryUsage(const base::flat_set<T, C>& set); |
+ |
+template <class K, class V, class C> |
+size_t EstimateMemoryUsage(const base::flat_map<K, V, C>& map); |
+ |
// TODO(dskiba): |
// std::forward_list |
@@ -542,6 +550,20 @@ size_t EstimateMemoryUsage(const std::stack<T, C>& stack) { |
return EstimateMemoryUsage(internal::GetUnderlyingContainer(stack)); |
} |
+// Flat containers |
+ |
+template <class T, class C> |
+size_t EstimateMemoryUsage(const base::flat_set<T, C>& set) { |
+ using value_type = typename base::flat_set<T, C>::value_type; |
+ return sizeof(value_type) * set.capacity() + EstimateIterableMemoryUsage(set); |
+} |
+ |
+template <class K, class V, class C> |
+size_t EstimateMemoryUsage(const base::flat_map<K, V, C>& map) { |
+ using value_type = typename base::flat_map<K, V, C>::value_type; |
+ return sizeof(value_type) * map.capacity() + EstimateIterableMemoryUsage(map); |
+} |
+ |
} // namespace trace_event |
} // namespace base |