mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:27:44 +00:00
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
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)
|
MmapRegion::MmapRegion(u32 base, u32 size, int prot, u8* data, u8* shadow_data)
|
||||||
: Region(base, size)
|
: Region(base, size, true)
|
||||||
, m_data(data)
|
, m_data(data)
|
||||||
, m_shadow_data(shadow_data)
|
, m_shadow_data(shadow_data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -82,4 +82,7 @@ private:
|
||||||
String m_name;
|
String m_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline bool Region::fast_is<MmapRegion>() const { return m_mmap; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,9 +29,10 @@
|
||||||
|
|
||||||
namespace UserspaceEmulator {
|
namespace UserspaceEmulator {
|
||||||
|
|
||||||
Region::Region(u32 base, u32 size)
|
Region::Region(u32 base, u32 size, bool mmap)
|
||||||
: m_emulator(Emulator::the())
|
: m_emulator(Emulator::the())
|
||||||
, m_range(Range { VirtualAddress { base }, size })
|
, m_range(Range { VirtualAddress { base }, size })
|
||||||
|
, m_mmap(mmap)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,8 +79,11 @@ public:
|
||||||
Emulator& emulator() { return m_emulator; }
|
Emulator& emulator() { return m_emulator; }
|
||||||
const Emulator& emulator() const { return m_emulator; }
|
const Emulator& emulator() const { return m_emulator; }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
bool fast_is() const = delete;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Region(u32 base, u32 size);
|
Region(u32 base, u32 size, bool mmap = false);
|
||||||
void set_range(Range r) { m_range = r; };
|
void set_range(Range r) { m_range = r; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -88,6 +91,7 @@ private:
|
||||||
|
|
||||||
Range m_range;
|
Range m_range;
|
||||||
|
|
||||||
|
bool m_mmap { false };
|
||||||
bool m_stack { false };
|
bool m_stack { false };
|
||||||
bool m_text { false };
|
bool m_text { false };
|
||||||
bool m_readable { true };
|
bool m_readable { true };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue