#include "base/profiler/module_cache.h"
#include <iterator>
#include <string_view>
#include <utility>
#include "base/check_op.h"
#include "base/ranges/algorithm.h"
#include "base/strings/strcat.h"
namespace base {
namespace {
struct ModuleAddressCompare { … };
}
std::string TransformModuleIDToSymbolServerFormat(std::string_view module_id) { … }
ModuleCache::ModuleCache() = default;
ModuleCache::~ModuleCache() { … }
const ModuleCache::Module* ModuleCache::GetModuleForAddress(uintptr_t address) { … }
std::vector<const ModuleCache::Module*> ModuleCache::GetModules() const { … }
void ModuleCache::UpdateNonNativeModules(
const std::vector<const Module*>& defunct_modules,
std::vector<std::unique_ptr<const Module>> new_modules) { … }
void ModuleCache::AddCustomNativeModule(std::unique_ptr<const Module> module) { … }
const ModuleCache::Module* ModuleCache::GetExistingModuleForAddress(
uintptr_t address) const { … }
void ModuleCache::RegisterAuxiliaryModuleProvider(
AuxiliaryModuleProvider* auxiliary_module_provider) { … }
void ModuleCache::UnregisterAuxiliaryModuleProvider(
AuxiliaryModuleProvider* auxiliary_module_provider) { … }
bool ModuleCache::ModuleAndAddressCompare::operator()(
const std::unique_ptr<const Module>& m1,
const std::unique_ptr<const Module>& m2) const { … }
bool ModuleCache::ModuleAndAddressCompare::operator()(
const std::unique_ptr<const Module>& m1,
uintptr_t address) const { … }
bool ModuleCache::ModuleAndAddressCompare::operator()(
uintptr_t address,
const std::unique_ptr<const Module>& m2) const { … }
}