From 82aea65bd37af760f7626648bfe82a6533ab1e31 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 9 Mar 2021 15:17:15 +0100 Subject: [PATCH] UserspaceEmulator: Add fast-path for is() Don't use default RTTI for these since they are performance-sensitive. --- Userland/DevTools/UserspaceEmulator/MmapRegion.cpp | 2 +- Userland/DevTools/UserspaceEmulator/MmapRegion.h | 3 +++ Userland/DevTools/UserspaceEmulator/Region.cpp | 3 ++- Userland/DevTools/UserspaceEmulator/Region.h | 6 +++++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Userland/DevTools/UserspaceEmulator/MmapRegion.cpp b/Userland/DevTools/UserspaceEmulator/MmapRegion.cpp index 62502d8c66..ce73cfd3a7 100644 --- a/Userland/DevTools/UserspaceEmulator/MmapRegion.cpp +++ b/Userland/DevTools/UserspaceEmulator/MmapRegion.cpp @@ -66,7 +66,7 @@ NonnullOwnPtr MmapRegion::create_file_backed(u32 base, u32 size, u32 } MmapRegion::MmapRegion(u32 base, u32 size, int prot, u8* data, u8* shadow_data) - : Region(base, size) + : Region(base, size, true) , m_data(data) , m_shadow_data(shadow_data) { diff --git a/Userland/DevTools/UserspaceEmulator/MmapRegion.h b/Userland/DevTools/UserspaceEmulator/MmapRegion.h index d11e3914f9..1c1c3c77ff 100644 --- a/Userland/DevTools/UserspaceEmulator/MmapRegion.h +++ b/Userland/DevTools/UserspaceEmulator/MmapRegion.h @@ -82,4 +82,7 @@ private: String m_name; }; +template<> +inline bool Region::fast_is() const { return m_mmap; } + } diff --git a/Userland/DevTools/UserspaceEmulator/Region.cpp b/Userland/DevTools/UserspaceEmulator/Region.cpp index 54c145a2a7..3b3f36edc0 100644 --- a/Userland/DevTools/UserspaceEmulator/Region.cpp +++ b/Userland/DevTools/UserspaceEmulator/Region.cpp @@ -29,9 +29,10 @@ namespace UserspaceEmulator { -Region::Region(u32 base, u32 size) +Region::Region(u32 base, u32 size, bool mmap) : m_emulator(Emulator::the()) , m_range(Range { VirtualAddress { base }, size }) + , m_mmap(mmap) { } diff --git a/Userland/DevTools/UserspaceEmulator/Region.h b/Userland/DevTools/UserspaceEmulator/Region.h index f903b2387f..6dbec19ee6 100644 --- a/Userland/DevTools/UserspaceEmulator/Region.h +++ b/Userland/DevTools/UserspaceEmulator/Region.h @@ -79,8 +79,11 @@ public: Emulator& emulator() { return m_emulator; } const Emulator& emulator() const { return m_emulator; } + template + bool fast_is() const = delete; + protected: - Region(u32 base, u32 size); + Region(u32 base, u32 size, bool mmap = false); void set_range(Range r) { m_range = r; }; private: @@ -88,6 +91,7 @@ private: Range m_range; + bool m_mmap { false }; bool m_stack { false }; bool m_text { false }; bool m_readable { true };