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