From 91678d19778891b4df854af0a2e9d5c162fb42c1 Mon Sep 17 00:00:00 2001 From: "Joshua T. Fisher" Date: Wed, 28 Jan 2026 19:20:46 -0800 Subject: [PATCH] Merge pull request #29 from playmer/playmer/fix_lookup Convert CodeGenerator::m_symbols to unordered_map to fix O(n) lookups --- ps2xRecomp/include/ps2recomp/code_generator.h | 2 +- ps2xRecomp/src/code_generator.cpp | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/ps2xRecomp/include/ps2recomp/code_generator.h b/ps2xRecomp/include/ps2recomp/code_generator.h index 8704772..1a3ff02 100644 --- a/ps2xRecomp/include/ps2recomp/code_generator.h +++ b/ps2xRecomp/include/ps2recomp/code_generator.h @@ -39,7 +39,7 @@ namespace ps2recomp const std::vector &instructions); public: - std::vector m_symbols; + std::unordered_map m_symbols; std::unordered_map m_renamedFunctions; BootstrapInfo m_bootstrapInfo; diff --git a/ps2xRecomp/src/code_generator.cpp b/ps2xRecomp/src/code_generator.cpp index 95f0d94..111e3e5 100644 --- a/ps2xRecomp/src/code_generator.cpp +++ b/ps2xRecomp/src/code_generator.cpp @@ -28,8 +28,10 @@ namespace ps2recomp namespace ps2recomp { CodeGenerator::CodeGenerator(const std::vector &symbols) - : m_symbols(symbols) { + for (auto& symbol : symbols) { + m_symbols.emplace(symbol.address, symbol); + } } void CodeGenerator::setRenamedFunctions(const std::unordered_map &renames) @@ -2573,12 +2575,9 @@ namespace ps2recomp Symbol *CodeGenerator::findSymbolByAddress(uint32_t address) { - for (auto &symbol : m_symbols) - { - if (symbol.address == address) - { - return &symbol; - } + auto it = m_symbols.find(address); + if (it != m_symbols.end()) { + return &it->second; } return nullptr;