Moved allocating neighbor array to separate function [skip ci]

This commit is contained in:
Andrew Kane
2024-01-24 16:17:34 -08:00
parent c816b5d0d1
commit 90e0a14bda

View File

@@ -202,6 +202,19 @@ HnswInitPage(Buffer buf, Page page)
HnswPageGetOpaque(page)->page_id = HNSW_PAGE_ID;
}
/*
* Allocate a neighbor array
*/
static HnswNeighborArray *
HnswInitNeighborArray(int lm, HnswAllocator * allocator)
{
HnswNeighborArray *a = HnswAlloc(allocator, offsetof(HnswNeighborArray, items) + sizeof(HnswCandidate) * lm);
a->length = 0;
a->closerSet = false;
return a;
}
/*
* Allocate neighbors
*/
@@ -216,14 +229,9 @@ HnswInitNeighbors(char *base, HnswElement element, int m, HnswAllocator * alloca
for (int lc = 0; lc <= level; lc++)
{
HnswNeighborArray *a;
int lm = HnswGetLayerM(m, lc);
HnswPtrStore(base, neighborList[lc], (HnswNeighborArray *) HnswAlloc(allocator, offsetof(HnswNeighborArray, items) + sizeof(HnswCandidate) * lm));
a = HnswGetNeighbors(base, element, lc);
a->length = 0;
a->closerSet = false;
HnswPtrStore(base, neighborList[lc], HnswInitNeighborArray(lm, allocator));
}
}