chore(hash): clean up TSHashTable functions

This commit is contained in:
Adam Heinermann 2025-11-16 09:50:18 -08:00 committed by fallenoak
parent efc52d4831
commit fe35b03cb7

View file

@ -95,8 +95,8 @@ void TSHashTable<T, TKey>::GrowListArray(uint32_t newarraysize) {
TSExplicitList<T, 0xDDDDDDDD> templist; TSExplicitList<T, 0xDDDDDDDD> templist;
templist.ChangeLinkOffset(linkOffset); templist.ChangeLinkOffset(linkOffset);
for (uint32_t i = 0; i < slotmask; i++) { for (uint32_t i = 0; i < slotmask; i++) {
for (T* ptr = this->m_slotlistarray[i].Head(); ptr; ptr = this->m_slotlistarray[i].Head()) { while (T* ptr = this->m_slotlistarray[i].Head()) {
templist.LinkNode(ptr, 2, 0); templist.LinkToTail(ptr);
} }
} }
@ -106,9 +106,9 @@ void TSHashTable<T, TKey>::GrowListArray(uint32_t newarraysize) {
} }
this->m_slotmask = newarraysize - 1; this->m_slotmask = newarraysize - 1;
for (T* ptr = templist.Head(); ptr; ptr = templist.Head()) { while (T* ptr = templist.Head()) {
auto& slot = this->m_slotlistarray[this->ComputeSlot(ptr->m_hashval)]; auto& slot = this->m_slotlistarray[this->ComputeSlot(ptr->m_hashval)];
slot.LinkNode(ptr, 2, 0); slot.LinkToTail(ptr);
} }
} }
@ -271,24 +271,12 @@ T* TSHashTable<T, TKey>::Ptr(const char* str) {
uint32_t hashval = SStrHashHT(str); uint32_t hashval = SStrHashHT(str);
uint32_t slot = this->ComputeSlot(hashval); for (T* ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].Head(); reinterpret_cast<intptr_t>(ptr) > 0; ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].RawNext(ptr)) {
auto slotlist = &this->m_slotlistarray[slot]; if (ptr->m_hashval == hashval && ptr->m_key == str) {
T* ptr = slotlist->Head();
if (!ptr) {
return nullptr;
}
while (ptr->m_hashval != hashval || !(ptr->m_key == str)) {
uint32_t slotIdx = this->ComputeSlot(hashval);
auto v9 = &this->m_slotlistarray[slotIdx];
ptr = v9->RawNext(ptr);
if (reinterpret_cast<intptr_t>(ptr) <= 0) {
return nullptr;
}
}
return ptr; return ptr;
}
}
return nullptr;
} }
template <class T, class TKey> template <class T, class TKey>
@ -297,24 +285,12 @@ T* TSHashTable<T, TKey>::Ptr(uint32_t hashval, const TKey& key) {
return nullptr; return nullptr;
} }
uint32_t slot = this->ComputeSlot(hashval); for (T* ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].Head(); reinterpret_cast<intptr_t>(ptr) > 0; ptr = this->m_slotlistarray[this->ComputeSlot(hashval)].RawNext(ptr)) {
auto slotlist = &this->m_slotlistarray[slot]; if (ptr->m_hashval == hashval && ptr->m_key == key) {
T* ptr = slotlist->Head();
if (!ptr) {
return nullptr;
}
while (ptr->m_hashval != hashval || !(ptr->m_key == key)) {
ptr = slotlist->RawNext(ptr);
if (reinterpret_cast<intptr_t>(ptr) <= 0) {
return nullptr;
}
}
return ptr; return ptr;
}
}
return nullptr;
} }
template <class T, class TKey> template <class T, class TKey>