1bdf3e7e5SWalter Erquinigo #include "TaskTimer.h"
2bdf3e7e5SWalter Erquinigo 
3bdf3e7e5SWalter Erquinigo using namespace lldb;
4bdf3e7e5SWalter Erquinigo using namespace lldb_private;
5bdf3e7e5SWalter Erquinigo using namespace lldb_private::trace_intel_pt;
6bdf3e7e5SWalter Erquinigo using namespace llvm;
7bdf3e7e5SWalter Erquinigo 
ForEachTimedTask(std::function<void (const std::string & event,std::chrono::milliseconds duration)> callback)8*1a3f9969SWalter Erquinigo void ScopedTaskTimer::ForEachTimedTask(
9bdf3e7e5SWalter Erquinigo     std::function<void(const std::string &event,
10bdf3e7e5SWalter Erquinigo                        std::chrono::milliseconds duration)>
11bdf3e7e5SWalter Erquinigo         callback) {
12bdf3e7e5SWalter Erquinigo   for (const auto &kv : m_timed_tasks) {
13bdf3e7e5SWalter Erquinigo     callback(kv.first, kv.second);
14bdf3e7e5SWalter Erquinigo   }
15bdf3e7e5SWalter Erquinigo }
16bdf3e7e5SWalter Erquinigo 
ForThread(lldb::tid_t tid)17*1a3f9969SWalter Erquinigo ScopedTaskTimer &TaskTimer::ForThread(lldb::tid_t tid) {
18bdf3e7e5SWalter Erquinigo   auto it = m_thread_timers.find(tid);
19bdf3e7e5SWalter Erquinigo   if (it == m_thread_timers.end())
20*1a3f9969SWalter Erquinigo     it = m_thread_timers.try_emplace(tid, ScopedTaskTimer{}).first;
21bdf3e7e5SWalter Erquinigo   return it->second;
22bdf3e7e5SWalter Erquinigo }
23*1a3f9969SWalter Erquinigo 
ForGlobal()24*1a3f9969SWalter Erquinigo ScopedTaskTimer &TaskTimer::ForGlobal() { return m_global_timer; }
25