summaryrefslogtreecommitdiff
path: root/src/memory.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-11 14:46:50 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-11 18:56:57 -0500
commitba250cc496b2e617823ff8111ef463b6adea27f4 (patch)
treedc926851da01b970aca827d6c6ca84b87a7432fa /src/memory.cpp
parent8047197b62894cb1f7bb6a6871870e4b91fde992 (diff)
replace handles with union struct
Diffstat (limited to 'src/memory.cpp')
-rw-r--r--src/memory.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/memory.cpp b/src/memory.cpp
index 9d235db..7ad282c 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -344,18 +344,20 @@ 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, bool &moved) {
+PkeHandle Buckets_NewHandle(std::size_t bucketBytes, std::size_t alignment, uint32_t bucketItemCount, uint32_t &bucketIncrementer, uint32_t &bucketCounter, uint32_t &itemCounter, void*& buckets, bool &moved) {
moved = false;
- uint64_t newHandle{itemCounter | bucketCounter};
+ PkeHandle returnValue {
+ .bucketIndex = bucketCounter,
+ .itemIndex = itemCounter,
+ };
- std::size_t calculatedAlignment = alignment < MINIMUM_ALIGNMENT ? MINIMUM_ALIGNMENT : alignment;
-
- itemCounter += uint64_t{1ULL << 32};
- if (itemCounter > uint64_t{(bucketItemCount - 1) << 32}) {
+ itemCounter += 1;
+ if (itemCounter > bucketItemCount) {
itemCounter = 0ULL;
bucketCounter += 1;
}
if (bucketCounter > bucketIncrementer) {
+ std::size_t calculatedAlignment = alignment < MINIMUM_ALIGNMENT ? MINIMUM_ALIGNMENT : alignment;
moved = true;
int64_t newIncrement = bucketIncrementer * 1.5;
char * newBuckets = reinterpret_cast<char *>(Pke_New(bucketBytes * newIncrement, calculatedAlignment));
@@ -365,7 +367,7 @@ uint64_t Buckets_NewHandle(std::size_t bucketBytes, std::size_t alignment, uint6
bucketIncrementer = newIncrement;
}
- return newHandle;
+ return returnValue;
}
void Pke_DebugPrint() {