Lines Matching defs:Root
61 bool validate(const ContextRoot *Root) {
63 // allocated for this Root, and jump over contained contexts based on
66 for (const auto *Mem = Root->FirstMemBlock; Mem; Mem = Mem->next()) {
79 for (const auto *Mem = Root->FirstMemBlock; Mem; Mem = Mem->next()) {
239 // This should be called once for a Root. Allocate the first arena, set up the
241 void setupContext(ContextRoot *Root, GUID Guid, uint32_t NumCounters,
246 if (Root->FirstMemBlock)
250 Root->FirstMemBlock = M;
251 Root->CurrentMem = M;
252 Root->FirstNode = allocContextNode(M->tryBumpAllocate(Needed), Guid,
254 AllContextRoots.PushBack(Root);
258 ContextRoot *Root, GUID Guid, uint32_t Counters,
260 if (!Root->FirstMemBlock) {
261 setupContext(Root, Guid, Counters, Callsites);
263 if (Root->Taken.TryLock()) {
264 __llvm_ctx_profile_current_context_root = Root;
265 onContextEnter(*Root->FirstNode);
266 return Root->FirstNode;
273 void __llvm_ctx_profile_release_context(ContextRoot *Root)
277 Root->Taken.Unlock();
286 auto *Root = AllContextRoots[I];
288 &Root->Taken);
289 for (auto *Mem = Root->FirstMemBlock; Mem; Mem = Mem->next())
292 resetContextNode(*Root->FirstNode);
304 auto *Root = AllContextRoots[I];
306 &Root->Taken);
307 if (!validate(Root)) {
311 if (!Writer(Data, *Root->FirstNode))