diff options
author | Brian Gianforcaro <bgianf@serenityos.org> | 2021-05-30 23:44:02 -0700 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2021-05-31 14:09:11 +0430 |
commit | 5bfba3f789711103d85f2e32c7f38eaf01656a8b (patch) | |
tree | 2aea0a45bff089ab6661ecea1e62719d17655794 /Userland/Libraries/LibDebug | |
parent | 35a97884aa665b86319dbc1a298553fe2527e033 (diff) | |
download | serenity-5bfba3f789711103d85f2e32c7f38eaf01656a8b.zip |
LibELF + LibDebug: Reduce allocations during symbolification
Avoid promotion of static strings to AK::String, instead use
AK::StringView and operator ""sv, to force string view's instead
which avoids allocation of String. This code path isn't hot enough
that it makes a huge difference, but every bit counts.
Diffstat (limited to 'Userland/Libraries/LibDebug')
-rw-r--r-- | Userland/Libraries/LibDebug/DebugInfo.cpp | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp | 10 | ||||
-rw-r--r-- | Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/Userland/Libraries/LibDebug/DebugInfo.cpp b/Userland/Libraries/LibDebug/DebugInfo.cpp index 8a943a10e0..d460e5285e 100644 --- a/Userland/Libraries/LibDebug/DebugInfo.cpp +++ b/Userland/Libraries/LibDebug/DebugInfo.cpp @@ -17,7 +17,7 @@ namespace Debug { DebugInfo::DebugInfo(NonnullOwnPtr<const ELF::Image> elf, String source_root, FlatPtr base_address) : m_elf(move(elf)) - , m_source_root(source_root) + , m_source_root(move(source_root)) , m_base_address(base_address) , m_dwarf_info(*m_elf) { @@ -78,7 +78,7 @@ void DebugInfo::parse_scopes_impl(const Dwarf::DIE& die) void DebugInfo::prepare_lines() { - auto section = elf().lookup_section(".debug_line"); + auto section = elf().lookup_section(".debug_line"sv); if (!section.has_value()) return; diff --git a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp index eae334a961..fa238c88fa 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp +++ b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp @@ -13,15 +13,15 @@ namespace Debug::Dwarf { DwarfInfo::DwarfInfo(const ELF::Image& elf) : m_elf(elf) { - m_debug_info_data = section_data(".debug_info"); - m_abbreviation_data = section_data(".debug_abbrev"); - m_debug_strings_data = section_data(".debug_str"); - m_debug_line_strings_data = section_data(".debug_line_str"); + m_debug_info_data = section_data(".debug_info"sv); + m_abbreviation_data = section_data(".debug_abbrev"sv); + m_debug_strings_data = section_data(".debug_str"sv); + m_debug_line_strings_data = section_data(".debug_line_str"sv); populate_compilation_units(); } -ReadonlyBytes DwarfInfo::section_data(const String& section_name) const +ReadonlyBytes DwarfInfo::section_data(const StringView& section_name) const { auto section = m_elf.lookup_section(section_name); if (!section.has_value()) diff --git a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h index d4de6c8319..49e41611f8 100644 --- a/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h +++ b/Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h @@ -60,7 +60,7 @@ public: private: void populate_compilation_units(); - ReadonlyBytes section_data(const String& section_name) const; + ReadonlyBytes section_data(const StringView& section_name) const; const ELF::Image& m_elf; ReadonlyBytes m_debug_info_data; |