AK: Reduce memory writes in HashTable destructor

This commit is contained in:
Dano Perniš 2020-10-17 15:44:43 +02:00 committed by Andreas Kling
parent d30c559774
commit 3efd4c105f

View file

@ -89,7 +89,19 @@ class HashTable {
public:
HashTable() { }
HashTable(size_t capacity) { rehash(capacity); }
~HashTable() { clear(); }
~HashTable()
{
if (!m_buckets)
return;
for (size_t i = 0; i < m_capacity; ++i) {
if (m_buckets[i].used)
m_buckets[i].slot()->~T();
}
kfree(m_buckets);
}
HashTable(const HashTable& other)
{
@ -188,19 +200,7 @@ public:
void clear()
{
if (!m_buckets)
return;
for (size_t i = 0; i < m_capacity; ++i) {
if (m_buckets[i].used)
m_buckets[i].slot()->~T();
}
kfree(m_buckets);
m_buckets = nullptr;
m_capacity = 0;
m_size = 0;
m_deleted_count = 0;
*this = HashTable();
}
HashSetResult set(T&& value)