11 #include "llvm/ADT/StringRef.h"
19 size_t traverseTree(
const MemoryTree &MT, std::string &ComponentName,
20 const trace::Metric &
Out) {
21 size_t OriginalLen = ComponentName.size();
22 if (!ComponentName.empty())
24 size_t Total = MT.self();
25 for (
const auto &
Entry : MT.children()) {
26 ComponentName +=
Entry.first;
28 ComponentName.resize(OriginalLen + 1);
30 ComponentName.resize(OriginalLen);
36 MemoryTree &MemoryTree::createChild(llvm::StringRef
Name) {
37 auto &Child = Children.try_emplace(
Name, DetailAlloc).first->getSecond();
41 const llvm::DenseMap<llvm::StringRef, MemoryTree> &
48 for (
const auto &
Entry : Children)
55 traverseTree(MT, RootName,
Out);