13#ifndef LLVM_XRAY_PROFILE_H
14#define LLVM_XRAY_PROFILE_H
90 : Blocks(std::move(O.Blocks)), NodeStorage(std::move(O.NodeStorage)),
91 Roots(std::move(O.Roots)), PathIDMap(std::move(O.PathIDMap)),
95 Blocks = std::move(O.Blocks);
96 NodeStorage = std::move(O.NodeStorage);
97 Roots = std::move(O.Roots);
98 PathIDMap = std::move(O.PathIDMap);
108 swap(L.Blocks, R.Blocks);
109 swap(L.NodeStorage, R.NodeStorage);
110 swap(L.Roots, R.Roots);
111 swap(L.PathIDMap, R.PathIDMap);
112 swap(L.NextID, R.NextID);
116 using BlockList = std::list<Block>;
120 std::vector<TrieNode *> Callees{};
121 TrieNode *Caller =
nullptr;
129 std::list<TrieNode> NodeStorage;
132 SmallVector<TrieNode *, 4> Roots;
135 DenseMap<PathID, TrieNode *> PathIDMap;
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
This file defines the DenseMap class.
DenseMap< Block *, BlockRelaxAux > Blocks
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
Profile instances are thread-compatible.
Profile & operator=(Profile &&O) noexcept
LLVM_ABI PathID internPath(ArrayRef< FuncID > P)
The stack represented in |P| must be in stack order (leaf to root).
BlockList::const_iterator const_iterator
LLVM_ABI Expected< std::vector< FuncID > > expandPath(PathID P) const
Provides a sequence of function IDs from a previously interned PathID.
const_iterator end() const
LLVM_ABI Error addBlock(Block &&B)
Appends a fully-formed Block instance into the Profile.
friend void swap(Profile &L, Profile &R)
Profile(Profile &&O) noexcept
const_iterator begin() const
LLVM_ABI Profile mergeProfilesByStack(const Profile &L, const Profile &R)
This algorithm will merge two Profile instances into a single Profile instance, aggregating blocks by...
LLVM_ABI Expected< Profile > profileFromTrace(const Trace &T)
This function takes a Trace and creates a Profile instance from it.
LLVM_ABI Expected< Profile > loadProfile(StringRef Filename)
This function will attempt to load an XRay Profiling Mode profile from the provided |Filename|.
LLVM_ABI Profile mergeProfilesByThread(const Profile &L, const Profile &R)
This algorithm will merge two Profile instances into a single Profile instance, aggregating blocks by...
This is an optimization pass for GlobalISel generic memory operations.
void swap(llvm::BitVector &LHS, llvm::BitVector &RHS)
Implement std::swap in terms of BitVector swap.
std::vector< std::pair< PathID, Data > > PathData
uint64_t CumulativeLocalTime