summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibDebug
diff options
context:
space:
mode:
authorBrian Gianforcaro <bgianf@serenityos.org>2021-05-30 23:44:02 -0700
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-05-31 14:09:11 +0430
commit5bfba3f789711103d85f2e32c7f38eaf01656a8b (patch)
tree2aea0a45bff089ab6661ecea1e62719d17655794 /Userland/Libraries/LibDebug
parent35a97884aa665b86319dbc1a298553fe2527e033 (diff)
downloadserenity-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.cpp4
-rw-r--r--Userland/Libraries/LibDebug/Dwarf/DwarfInfo.cpp10
-rw-r--r--Userland/Libraries/LibDebug/Dwarf/DwarfInfo.h2
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;