33 lines · cpp
1//===-- TaskTimer.cpp -----------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "TaskTimer.h"10 11using namespace lldb;12using namespace lldb_private;13using namespace lldb_private::trace_intel_pt;14using namespace llvm;15 16void ScopedTaskTimer::ForEachTimedTask(17 std::function<void(const std::string &event,18 std::chrono::milliseconds duration)>19 callback) {20 for (const auto &kv : m_timed_tasks) {21 callback(kv.first, kv.second);22 }23}24 25ScopedTaskTimer &TaskTimer::ForThread(lldb::tid_t tid) {26 auto it = m_thread_timers.find(tid);27 if (it == m_thread_timers.end())28 it = m_thread_timers.try_emplace(tid, ScopedTaskTimer{}).first;29 return it->second;30}31 32ScopedTaskTimer &TaskTimer::ForGlobal() { return m_global_timer; }33