1 //===-- JITLoader.cpp -------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Target/JITLoader.h" 11 #include "lldb/Target/JITLoaderList.h" 12 #include "lldb/lldb-private.h" 13 14 using namespace lldb; 15 using namespace lldb_private; 16 17 JITLoaderList::JITLoaderList() : m_jit_loaders_vec(), m_jit_loaders_mutex() {} 18 19 JITLoaderList::~JITLoaderList() {} 20 21 void JITLoaderList::Append(const JITLoaderSP &jit_loader_sp) { 22 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 23 m_jit_loaders_vec.push_back(jit_loader_sp); 24 } 25 26 void JITLoaderList::Remove(const JITLoaderSP &jit_loader_sp) { 27 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 28 m_jit_loaders_vec.erase(std::remove(m_jit_loaders_vec.begin(), 29 m_jit_loaders_vec.end(), jit_loader_sp), 30 m_jit_loaders_vec.end()); 31 } 32 33 size_t JITLoaderList::GetSize() const { return m_jit_loaders_vec.size(); } 34 35 JITLoaderSP JITLoaderList::GetLoaderAtIndex(size_t idx) { 36 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 37 return m_jit_loaders_vec[idx]; 38 } 39 40 void JITLoaderList::DidLaunch() { 41 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 42 for (auto const &jit_loader : m_jit_loaders_vec) 43 jit_loader->DidLaunch(); 44 } 45 46 void JITLoaderList::DidAttach() { 47 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 48 for (auto const &jit_loader : m_jit_loaders_vec) 49 jit_loader->DidAttach(); 50 } 51 52 void JITLoaderList::ModulesDidLoad(ModuleList &module_list) { 53 std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 54 for (auto const &jit_loader : m_jit_loaders_vec) 55 jit_loader->ModulesDidLoad(module_list); 56 } 57