From 0c844e4bc2c47ae781a6c490972e86b44ca496f9 Mon Sep 17 00:00:00 2001 From: nmzik Date: Tue, 29 Sep 2026 13:08:13 +0400 Subject: [PATCH] profiler: use native Tracy scopes and remove unused manual lifetime tracking --- src/common/profiler.cpp | 39 ------------------------------------ src/common/profiler.h | 33 ++++-------------------------- src/loader/runtimeLinker.cpp | 12 ----------- 3 files changed, 4 insertions(+), 80 deletions(-) diff --git a/src/common/profiler.cpp b/src/common/profiler.cpp index 6eeec0c99..ceca8fd98 100644 --- a/src/common/profiler.cpp +++ b/src/common/profiler.cpp @@ -2,52 +2,13 @@ #include "common/emulatorConfig.h" -#include #include #include #include #include -#include - -namespace { - -thread_local std::vector g_block_stack; - -void RemoveBlock(Profiler::ScopedBlock* block) { - auto block_it = std::find(g_block_stack.rbegin(), g_block_stack.rend(), block); - if (block_it != g_block_stack.rend()) { - g_block_stack.erase(std::next(block_it).base()); - } -} - -} // namespace namespace Profiler { -ScopedBlock::ScopedBlock(const tracy::SourceLocationData* source_location) { - if (tracy::ProfilerAvailable()) { - m_zone.emplace(source_location, TRACY_CALLSTACK, true); - g_block_stack.push_back(this); - } -} - -ScopedBlock::~ScopedBlock() { - End(); -} - -void ScopedBlock::End() { - if (m_zone.has_value()) { - m_zone.reset(); - RemoveBlock(this); - } -} - -void EndBlock() { - if (!g_block_stack.empty()) { - g_block_stack.back()->End(); - } -} - void SetThreadName(const char* name) { if (tracy::ProfilerAvailable() && name != nullptr) { tracy::SetThreadName(name); diff --git a/src/common/profiler.h b/src/common/profiler.h index 1ebbb5e6d..0de622070 100644 --- a/src/common/profiler.h +++ b/src/common/profiler.h @@ -4,7 +4,6 @@ #include "common/common.h" #include -#include #include // IWYU pragma: export namespace profiler::colors { @@ -23,22 +22,6 @@ inline constexpr uint32_t DeepOrangeA200 = 0xff6e40; namespace Profiler { -class ScopedBlock { -public: - explicit ScopedBlock(const tracy::SourceLocationData* source_location); - ScopedBlock(const ScopedBlock&) = delete; - ScopedBlock& operator=(const ScopedBlock&) = delete; - ScopedBlock(ScopedBlock&&) = delete; - ScopedBlock& operator=(ScopedBlock&&) = delete; - ~ScopedBlock(); - - void End(); - -private: - std::optional m_zone; -}; - -void EndBlock(); void SetThreadName(const char* name); void Initialize(); @@ -66,19 +49,11 @@ struct Lifecycle { kyty_profiler_source_location_, line) {name, TracyFunction, TracyFile, \ static_cast(line), \ KYTY_PROFILER_COLOR_OR_DEFAULT(0, __VA_ARGS__)}; \ - Profiler::ScopedBlock KYTY_PROFILER_CONCAT(kyty_profiler_block_, line)( \ - &KYTY_PROFILER_CONCAT(kyty_profiler_source_location_, line)) + tracy::ScopedZone KYTY_PROFILER_CONCAT(kyty_profiler_block_, line)( \ + &KYTY_PROFILER_CONCAT(kyty_profiler_source_location_, line), \ + TRACY_CALLSTACK, tracy::ProfilerAvailable()) -#define KYTY_PROFILER_FUNCTION(...) KYTY_PROFILER_FUNCTION_IMPL(__LINE__ __VA_OPT__(, ) __VA_ARGS__) -#define KYTY_PROFILER_FUNCTION_IMPL(line, ...) \ - static constexpr tracy::SourceLocationData KYTY_PROFILER_CONCAT( \ - kyty_profiler_source_location_, line) {nullptr, TracyFunction, TracyFile, \ - static_cast(line), \ - KYTY_PROFILER_COLOR_OR_DEFAULT(0, __VA_ARGS__)}; \ - Profiler::ScopedBlock KYTY_PROFILER_CONCAT(kyty_profiler_block_, line)( \ - &KYTY_PROFILER_CONCAT(kyty_profiler_source_location_, line)) - -#define KYTY_PROFILER_END_BLOCK Profiler::EndBlock() +#define KYTY_PROFILER_FUNCTION(...) KYTY_PROFILER_BLOCK(nullptr __VA_OPT__(, ) __VA_ARGS__) #define KYTY_PROFILER_THREAD(name) Profiler::SetThreadName(name) diff --git a/src/loader/runtimeLinker.cpp b/src/loader/runtimeLinker.cpp index 4d2678413..18d618b65 100644 --- a/src/loader/runtimeLinker.cpp +++ b/src/loader/runtimeLinker.cpp @@ -808,15 +808,9 @@ static void GetDynLibs(Elf64* elf, T* out, const char* names, Elf64_Sxword tag) static RelocationInfo GetRelocationInfo(Elf64_Rela* r, Program* program) { KYTY_PROFILER_FUNCTION(); - // KYTY_PROFILER_BLOCK("1"); - RelocationInfo ret; // SymbolRecord sr {}; - // KYTY_PROFILER_END_BLOCK; - - // KYTY_PROFILER_BLOCK("2"); - auto type = r->GetType(); auto symbol = r->GetSymbol(); Elf64_Sxword addend = r->r_addend; @@ -826,10 +820,6 @@ static RelocationInfo GetRelocationInfo(Elf64_Rela* r, Program* program) { ret.vaddr = ret.base_vaddr + r->r_offset; ret.bind_self = false; - // KYTY_PROFILER_END_BLOCK; - - // KYTY_PROFILER_BLOCK("3"); - switch (type) { case R_X86_64_GLOB_DAT: case R_X86_64_JUMP_SLOT: addend = 0; [[fallthrough]]; @@ -878,8 +868,6 @@ static RelocationInfo GetRelocationInfo(Elf64_Rela* r, Program* program) { default: EXIT("unknown type: %d\n", (int)type); } - // KYTY_PROFILER_END_BLOCK; - return ret; }