diff --git a/include/memory_space.h b/include/memory_space.h index a4edf6dfbb58b588a86a99f55674dd88fad45ab4..e2a168c4be35a32352215af9592229f8d47e440f 100644 --- a/include/memory_space.h +++ b/include/memory_space.h @@ -48,7 +48,7 @@ class MemorySpace_t : public std::map<RangeAddress_t,char> virtual void MergeFreeRange(RangeAddress_t addr)=0; virtual RangeSet_t::iterator FindFreeRange(RangeAddress_t addr)=0; virtual Range_t GetFreeRange(int size)=0; - virtual void AddFreeRange(Range_t newRange)=0; + virtual void AddFreeRange(Range_t newRange, bool phantom=false)=0; // queries about free areas. virtual bool AreBytesFree(RangeAddress_t addr, int num_bytes)=0; diff --git a/include/range.h b/include/range.h index 3dae5383d0ca4dbd6e8e633e2bcfafbc87c201ec..43c352aed24f9bdcfeeae4f0d1cec2fc4bdf7c67 100644 --- a/include/range.h +++ b/include/range.h @@ -41,13 +41,15 @@ typedef uintptr_t RangeAddress_t; class Range_t { public: - Range_t(RangeAddress_t p_s, RangeAddress_t p_e) : m_start(p_s), m_end(p_e) { } - Range_t() : m_start(0), m_end(0) { } + Range_t(RangeAddress_t p_s, RangeAddress_t p_e, bool phantom=false) + : m_start(p_s), m_end(p_e), m_phantom(phantom) { } + Range_t() : m_start(0), m_end(0), m_phantom(false) { } virtual RangeAddress_t GetStart() const { return m_start; } virtual RangeAddress_t GetEnd() const { return m_end; } virtual RangeAddress_t SetStart(RangeAddress_t s) { m_start=s; } virtual RangeAddress_t SetEnd(RangeAddress_t e) { m_end=e; } + virtual void SetPhantom(bool phantom) { m_phantom = phantom; }; virtual bool Is2ByteRange() { @@ -57,9 +59,13 @@ class Range_t { return (m_end - m_start) == 5; }; + virtual bool IsPhantom() + { + return m_phantom; + }; protected: - + bool m_phantom; RangeAddress_t m_start, m_end; };