summaryrefslogtreecommitdiff
path: root/src/memory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.hpp')
-rw-r--r--src/memory.hpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/memory.hpp b/src/memory.hpp
index b93890a..b76a72b 100644
--- a/src/memory.hpp
+++ b/src/memory.hpp
@@ -24,8 +24,8 @@ struct BucketContainer {
T *buckets = nullptr;
};
-void *Pke_New(std::size_t sz);
-void *Pke_New(std::size_t sz, MemBucket *bkt);
+void *Pke_New(std::size_t sz, std::size_t alignment);
+void *Pke_New(std::size_t sz, std::size_t alignment, MemBucket *bkt);
void Pke_Delete(const void *ptr, std::size_t sz);
void Pke_Delete(const void *ptr, std::size_t sz, MemBucket *bkt);
void Pke_DebugPrint();
@@ -38,9 +38,9 @@ template <typename T>
inline T *Pke_New(MemBucket *bucket = nullptr) {
void *ptr = nullptr;
if (bucket) {
- ptr = Pke_New(sizeof(T), bucket);
+ ptr = Pke_New(sizeof(T), alignof(T), bucket);
} else {
- ptr = Pke_New(sizeof(T));
+ ptr = Pke_New(sizeof(T), alignof(T));
}
if IS_CONSTRUCTIBLE(T) {
return new (ptr) T{};
@@ -51,9 +51,9 @@ template <typename T>
inline T *Pke_New(long count, MemBucket *bucket = nullptr) {
char *ptr = nullptr;
if (bucket) {
- ptr = static_cast<char *>(Pke_New(sizeof(T) * count, bucket));
+ ptr = static_cast<char *>(Pke_New(sizeof(T) * count, alignof(T), bucket));
} else {
- ptr = static_cast<char *>(Pke_New(sizeof(T) * count));
+ ptr = static_cast<char *>(Pke_New(sizeof(T) * count, alignof(T)));
}
if IS_CONSTRUCTIBLE(T) {
for (long i = 0; i < count; ++i) {
@@ -94,18 +94,18 @@ void Buckets_Init(BucketContainer<T, CT> &bktContainer) {
bktContainer.buckets = Pke_New<T>(bktContainer.incrementer);
}
-uint64_t Buckets_NewHandle(std::size_t bucketBytes, 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);
template <typename T> inline uint64_t Buckets_NewHandle(uint64_t bucketItemCount, uint64_t &bucketIncrementer, uint64_t &bucketCounter, uint64_t &itemCounter, T*& buckets) {
void *ptr = reinterpret_cast<void *>(buckets);
- uint64_t handle = Buckets_NewHandle(sizeof(T), bucketItemCount, bucketIncrementer, bucketCounter, itemCounter, ptr);
+ uint64_t handle = Buckets_NewHandle(sizeof(T), alignof(T), bucketItemCount, bucketIncrementer, bucketCounter, itemCounter, ptr);
buckets = reinterpret_cast<T *>(ptr);
return handle;
}
template <typename T, typename CT>
inline CT Buckets_NewHandle(uint64_t maxBucketItemCount, BucketContainer<T, CT> &bktContainer) {
- return Buckets_NewHandle(maxBucketItemCount, bktContainer.incrementer, bktContainer.bucketCounter, bktContainer.itemCounter, bktContainer.buckets);
+ return Buckets_NewHandle<T>(maxBucketItemCount, bktContainer.incrementer, bktContainer.bucketCounter, bktContainer.itemCounter, bktContainer.buckets);
}
static inline constexpr uint64_t Buckets_GetBucketIndex(uint64_t handle) {