180814287SRaphael Isemann //===-- JITLoaderList.cpp -------------------------------------------------===// 24b047f23SGreg Clayton // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 64b047f23SGreg Clayton // 74b047f23SGreg Clayton //===----------------------------------------------------------------------===// 84b047f23SGreg Clayton 94b047f23SGreg Clayton #include "lldb/Target/JITLoader.h" 104b047f23SGreg Clayton #include "lldb/Target/JITLoaderList.h" 11b9c1b51eSKate Stone #include "lldb/lldb-private.h" 124b047f23SGreg Clayton 134b047f23SGreg Clayton using namespace lldb; 144b047f23SGreg Clayton using namespace lldb_private; 154b047f23SGreg Clayton JITLoaderList()16b9c1b51eSKate StoneJITLoaderList::JITLoaderList() : m_jit_loaders_vec(), m_jit_loaders_mutex() {} 174b047f23SGreg Clayton 18*fd2433e1SJonas Devlieghere JITLoaderList::~JITLoaderList() = default; 194b047f23SGreg Clayton Append(const JITLoaderSP & jit_loader_sp)20b9c1b51eSKate Stonevoid JITLoaderList::Append(const JITLoaderSP &jit_loader_sp) { 2116ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 224b047f23SGreg Clayton m_jit_loaders_vec.push_back(jit_loader_sp); 234b047f23SGreg Clayton } 244b047f23SGreg Clayton Remove(const JITLoaderSP & jit_loader_sp)25b9c1b51eSKate Stonevoid JITLoaderList::Remove(const JITLoaderSP &jit_loader_sp) { 2616ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 274b047f23SGreg Clayton m_jit_loaders_vec.erase(std::remove(m_jit_loaders_vec.begin(), 284b047f23SGreg Clayton m_jit_loaders_vec.end(), jit_loader_sp), 294b047f23SGreg Clayton m_jit_loaders_vec.end()); 304b047f23SGreg Clayton } 314b047f23SGreg Clayton GetSize() const32b9c1b51eSKate Stonesize_t JITLoaderList::GetSize() const { return m_jit_loaders_vec.size(); } 334b047f23SGreg Clayton GetLoaderAtIndex(size_t idx)34b9c1b51eSKate StoneJITLoaderSP JITLoaderList::GetLoaderAtIndex(size_t idx) { 3516ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 364b047f23SGreg Clayton return m_jit_loaders_vec[idx]; 374b047f23SGreg Clayton } 384b047f23SGreg Clayton DidLaunch()39b9c1b51eSKate Stonevoid JITLoaderList::DidLaunch() { 4016ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 414b047f23SGreg Clayton for (auto const &jit_loader : m_jit_loaders_vec) 424b047f23SGreg Clayton jit_loader->DidLaunch(); 434b047f23SGreg Clayton } 444b047f23SGreg Clayton DidAttach()45b9c1b51eSKate Stonevoid JITLoaderList::DidAttach() { 4616ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 474b047f23SGreg Clayton for (auto const &jit_loader : m_jit_loaders_vec) 484b047f23SGreg Clayton jit_loader->DidAttach(); 494b047f23SGreg Clayton } 50eb4d0607SAndrew MacPherson ModulesDidLoad(ModuleList & module_list)51b9c1b51eSKate Stonevoid JITLoaderList::ModulesDidLoad(ModuleList &module_list) { 5216ff8604SSaleem Abdulrasool std::lock_guard<std::recursive_mutex> guard(m_jit_loaders_mutex); 53eb4d0607SAndrew MacPherson for (auto const &jit_loader : m_jit_loaders_vec) 54eb4d0607SAndrew MacPherson jit_loader->ModulesDidLoad(module_list); 55eb4d0607SAndrew MacPherson } 56