# Node ID 9f0dee0a066985a9bd942478486931bc47014b56 # Parent b188f1f37f106f1b4bbbcfb5005f7097644ecc67 diff --git a/src/mem/ruby/structures/TBETable.hh b/src/mem/ruby/structures/TBETable.hh --- a/src/mem/ruby/structures/TBETable.hh +++ b/src/mem/ruby/structures/TBETable.hh @@ -63,10 +63,10 @@ TBETable& operator=(const TBETable& obj); // Data Members (m_prefix) - std::unordered_map m_map; + std::unordered_map m_map; private: - int m_number_of_TBEs; + const int m_number_of_TBEs; }; template @@ -93,16 +93,17 @@ { assert(!isPresent(address)); assert(m_map.size() < m_number_of_TBEs); - m_map[address] = ENTRY(); + m_map[address] = new ENTRY(); } template inline void TBETable::deallocate(Addr address) { - assert(isPresent(address)); - assert(m_map.size() > 0); - m_map.erase(address); + auto it = m_map.find(address); + assert(it != m_map.end()); + delete (*it).second; + m_map.erase(it); } // looks an address up in the cache @@ -110,8 +111,10 @@ inline ENTRY* TBETable::lookup(Addr address) { - if (m_map.find(address) != m_map.end()) return &(m_map.find(address)->second); - return NULL; + auto it = m_map.find(address); + if (it != m_map.end()) + return (*it).second; + return nullptr; }