UserspaceEmulator: Add fast-path for is<MmapRegion>()
Don't use default RTTI for these since they are performance-sensitive.
This commit is contained in:
parent
656cd477c2
commit
82aea65bd3
Notes:
sideshowbarker
2024-07-18 21:34:32 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/82aea65bd37
4 changed files with 11 additions and 3 deletions
|
@ -66,7 +66,7 @@ NonnullOwnPtr<MmapRegion> 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)
|
||||
{
|
||||
|
|
|
@ -82,4 +82,7 @@ private:
|
|||
String m_name;
|
||||
};
|
||||
|
||||
template<>
|
||||
inline bool Region::fast_is<MmapRegion>() const { return m_mmap; }
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -79,8 +79,11 @@ public:
|
|||
Emulator& emulator() { return m_emulator; }
|
||||
const Emulator& emulator() const { return m_emulator; }
|
||||
|
||||
template<typename T>
|
||||
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 };
|
||||
|
|
Loading…
Add table
Reference in a new issue