summaryrefslogtreecommitdiff
path: root/src/memory.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-06 15:27:42 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-06 15:27:42 -0500
commit8629b2497b7cb453d1e4a3ed6897cfaf8a771863 (patch)
tree8003ca707705e2053bb2af84cfdb172cb03e3468 /src/memory.cpp
parent837b2c91076b52d10438a7c6a564e613436ced48 (diff)
expose if the contents of a bucket were moved
Diffstat (limited to 'src/memory.cpp')
-rw-r--r--src/memory.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/memory.cpp b/src/memory.cpp
index f2b2ee3..9d235db 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -344,7 +344,8 @@ void Pke_MemoryFlush() {
}
}
-uint64_t Buckets_NewHandle(std::size_t bucketBytes, std::size_t alignment, uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, void*& buckets) {
+uint64_t Buckets_NewHandle(std::size_t bucketBytes, std::size_t alignment, uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, void*& buckets, bool &moved) {
+ moved = false;
uint64_t newHandle{itemCounter | bucketCounter};
std::size_t calculatedAlignment = alignment < MINIMUM_ALIGNMENT ? MINIMUM_ALIGNMENT : alignment;
@@ -355,6 +356,7 @@ uint64_t Buckets_NewHandle(std::size_t bucketBytes, std::size_t alignment, uint6
bucketCounter += 1;
}
if (bucketCounter > bucketIncrementer) {
+ moved = true;
int64_t newIncrement = bucketIncrementer * 1.5;
char * newBuckets = reinterpret_cast<char *>(Pke_New(bucketBytes * newIncrement, calculatedAlignment));
std::memcpy(newBuckets, buckets, bucketBytes * bucketIncrementer);