From e5cdae8c5a63855c77b16d9c8b63b24362170400 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 14 Jun 2026 06:28:05 +0200 Subject: [PATCH] Use std::string_view in cpu code --- Utilities/JIT.h | 4 ++-- Utilities/JITLLVM.cpp | 6 +++--- Utilities/stack_trace.h | 4 ++-- rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.cpp | 2 +- rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.h | 2 +- rpcs3/Emu/Cell/PPUThread.cpp | 6 +++--- rpcs3/Emu/Cell/PPUTranslator.cpp | 2 +- rpcs3/Emu/Cell/PPUTranslator.h | 2 +- rpcs3/Emu/Cell/SPULLVMRecompiler.cpp | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Utilities/JIT.h b/Utilities/JIT.h index d18f795563..aba30c3400 100644 --- a/Utilities/JIT.h +++ b/Utilities/JIT.h @@ -525,7 +525,7 @@ class jit_compiler final atomic_t m_disk_space = umax; public: - jit_compiler(const std::unordered_map& _link, const std::string& _cpu, u32 flags = 0, std::function symbols_cement = {}) noexcept; + jit_compiler(const std::unordered_map& _link, std::string_view _cpu, u32 flags = 0, std::function symbols_cement = {}) noexcept; jit_compiler& operator=(thread_state) noexcept; ~jit_compiler() noexcept; @@ -571,7 +571,7 @@ public: u64 get(const std::string& name); // Get CPU info - static std::string cpu(const std::string& _cpu); + static std::string cpu(std::string_view _cpu); // Get system triple (PPU) static std::string triple1(); diff --git a/Utilities/JITLLVM.cpp b/Utilities/JITLLVM.cpp index 66a7d3e678..3bfb30cea2 100644 --- a/Utilities/JITLLVM.cpp +++ b/Utilities/JITLLVM.cpp @@ -551,9 +551,9 @@ public: } }; -std::string jit_compiler::cpu(const std::string& _cpu) +std::string jit_compiler::cpu(std::string_view _cpu) { - std::string m_cpu = _cpu; + std::string m_cpu = std::string(_cpu); if (m_cpu.empty()) { @@ -681,7 +681,7 @@ bool jit_compiler::add_sub_disk_space(ssz space) }).second; } -jit_compiler::jit_compiler(const std::unordered_map& _link, const std::string& _cpu, u32 flags, std::function symbols_cement) noexcept +jit_compiler::jit_compiler(const std::unordered_map& _link, std::string_view _cpu, u32 flags, std::function symbols_cement) noexcept : m_context(new llvm::LLVMContext) , m_cpu(cpu(_cpu)) { diff --git a/Utilities/stack_trace.h b/Utilities/stack_trace.h index d0cec0cf4c..d186a698f4 100644 --- a/Utilities/stack_trace.h +++ b/Utilities/stack_trace.h @@ -14,7 +14,7 @@ namespace utils // Printing utilities template - concept Logger = requires (T& t, const std::string& msg) + concept Logger = requires (T& t, std::string_view msg) { { t.print(msg) }; }; @@ -28,7 +28,7 @@ namespace utils : log(chan) {} - void print(const std::string& s) + void print(std::string_view s) { log.error("%s", s); } diff --git a/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.cpp b/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.cpp index 91aedffd85..2fda215664 100644 --- a/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.cpp +++ b/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.cpp @@ -219,7 +219,7 @@ namespace aarch64 return result; } - gpr GHC_frame_preservation_pass::get_base_register_for_call(const std::string& callee_name, gpr default_reg) + gpr GHC_frame_preservation_pass::get_base_register_for_call(std::string_view callee_name, gpr default_reg) { // We go over the base_register_lookup table and find the first matching pattern for (const auto& pattern : m_config.base_register_lookup) diff --git a/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.h b/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.h index 701fe85be9..2ca8c383e5 100644 --- a/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.h +++ b/rpcs3/Emu/CPU/Backends/AArch64/AArch64JIT.h @@ -67,7 +67,7 @@ namespace aarch64 bool is_faux_function(const std::string& function_name); - gpr get_base_register_for_call(const std::string& callee_name, gpr default_reg = gpr::x19); + gpr get_base_register_for_call(std::string_view callee_name, gpr default_reg = gpr::x19); void process_leaf_function(llvm::IRBuilder<>* irb, llvm::Function& f); diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 11bfd40eca..82564a124a 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -5177,7 +5177,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s settings += ppu_settings::contains_symbol_resolver; // Avoid invalidating all modules for this purpose // Write version, hash, CPU, settings - fmt::append(obj_name, "v7-kusa-%s-%s-%s.obj", fmt::base57(output, 16), fmt::base57(settings), jit_compiler::cpu(g_cfg.core.llvm_cpu)); + fmt::append(obj_name, "v7-kusa-%s-%s-%s.obj", fmt::base57(output, 16), fmt::base57(settings), jit_compiler::cpu(g_cfg.core.llvm_cpu.to_string())); } if (cpu ? cpu->state.all_of(cpu_flag::exit) : Emu.IsStopped()) @@ -5318,7 +5318,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s { // Use another JIT instance - jit_compiler jit2({}, g_cfg.core.llvm_cpu, 0x1); + jit_compiler jit2({}, g_cfg.core.llvm_cpu.to_string(), 0x1); ppu_initialize2(jit2, part, cache_path, obj_name); } @@ -5351,7 +5351,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s // Initialize compiler instance while (jits.size() < utils::aligned_div(module_counter, c_moudles_per_jit) && is_being_used_in_emulation) { - jits.emplace_back(std::make_shared(s_link_table, g_cfg.core.llvm_cpu, 0, symbols_cement)); + jits.emplace_back(std::make_shared(s_link_table, g_cfg.core.llvm_cpu.to_string(), 0, symbols_cement)); for (const auto& [addr, func] : *shared_map) { diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index 9125aa5eeb..7cba32d9f7 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -961,7 +961,7 @@ void PPUTranslator::WriteMemory(Value* addr, Value* value, bool is_be, u32 align m_ir->CreateAlignedStore(value, GetMemory(addr), llvm::MaybeAlign{align})->setVolatile(true); } -void PPUTranslator::CompilationError(const std::string& error) +void PPUTranslator::CompilationError(std::string_view error) { ppu_log.error("LLVM: [0x%08x] Error: %s", m_addr + (m_reloc ? m_reloc->addr : 0), error); } diff --git a/rpcs3/Emu/Cell/PPUTranslator.h b/rpcs3/Emu/Cell/PPUTranslator.h index 010945656e..be84d8061e 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.h +++ b/rpcs3/Emu/Cell/PPUTranslator.h @@ -334,7 +334,7 @@ public: } // Handle compilation errors - void CompilationError(const std::string& error); + void CompilationError(std::string_view error); PPUTranslator(llvm::LLVMContext& context, llvm::Module* _module, const ppu_module& info, llvm::ExecutionEngine& engine); ~PPUTranslator(); diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index f976dd2d87..40e473d365 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -77,7 +77,7 @@ void spu_llvm_set_compile_context(spu_llvm_compile_context* context) noexcept class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator { // JIT Instance - jit_compiler m_jit{{}, jit_compiler::cpu(g_cfg.core.llvm_cpu)}; + jit_compiler m_jit{{}, jit_compiler::cpu(g_cfg.core.llvm_cpu.to_string())}; // Interpreter table size power const u8 m_interp_magn; @@ -1592,7 +1592,7 @@ public: clear_transforms(); #ifdef ARCH_ARM64 { - auto should_exclude_function = [](const std::string& fn_name) + auto should_exclude_function = [](std::string_view fn_name) { return fn_name.starts_with("spu_") || fn_name.starts_with("tr_"); };