Chromium Code Reviews| 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 1f4132bdcb2dcf29cd0396fe7c2ac691b0e6769b..e8ac89fc28a423e85f72ce81f6f3bf7c4f11d493 100644 |
| --- a/base/trace_event/memory_usage_estimator.h |
| +++ b/base/trace_event/memory_usage_estimator.h |
| @@ -22,6 +22,7 @@ |
| #include <vector> |
| #include "base/base_export.h" |
| +#include "base/containers/linked_list.h" |
| #include "base/strings/string16.h" |
| #include "base/template_util.h" |
| @@ -111,6 +112,9 @@ size_t EstimateMemoryUsage(const std::vector<T, A>& vector); |
| template <class T, class A> |
| size_t EstimateMemoryUsage(const std::list<T, A>& list); |
| +template <class T> |
| +size_t EstimateMemoryUsage(const base::LinkedList<T>& list); |
| + |
| template <class T, class C, class A> |
| size_t EstimateMemoryUsage(const std::set<T, C, A>& set); |
| @@ -352,6 +356,18 @@ size_t EstimateMemoryUsage(const std::list<T, A>& list) { |
| EstimateIterableMemoryUsage(list); |
| } |
| +template <class T> |
| +size_t EstimateMemoryUsage(const base::LinkedList<T>& list) { |
| + size_t memory_usage = sizeof(LinkedList<T>); |
|
DmitrySkiba
2017/02/27 19:17:42
We don't need to account for LinkedList static siz
jkarlin
2017/02/28 13:10:50
Done.
|
| + for (base::LinkNode<T>* node = list.head(); node != list.end(); |
| + node = node->next()) { |
| + // Since we increment by calling node = node->next() we know that node |
| + // isn't nullptr. |
| + memory_usage += EstimateMemoryUsage(*node->value()); |
|
Primiano Tucci (use gerrit)
2017/02/27 18:14:53
shouldn't this also be + sizeof(base::LinkNode<T>)
DmitrySkiba
2017/02/27 19:17:42
Yup. Since nodes are (likely) heap allocated, we n
jkarlin
2017/02/28 13:10:50
Done.
|
| + } |
| + return memory_usage; |
| +} |
| + |
| // Tree containers |
| template <class V> |