diff options
Diffstat (limited to 'src/memory.hpp')
| -rw-r--r-- | src/memory.hpp | 18 |
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) { |
