diff options
Diffstat (limited to 'src/memory.hpp')
| -rw-r--r-- | src/memory.hpp | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/src/memory.hpp b/src/memory.hpp deleted file mode 100644 index fe63318..0000000 --- a/src/memory.hpp +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef PKE_MEMORY_HPP -#define PKE_MEMORY_HPP - -#include "memory-type-defs.hpp" -#include "macros.hpp" - -#include <cstring> -#include <cstdint> -#include <cstdlib> -#include <cstdio> -#include <cassert> -#include <type_traits> -#include <new> - -// 256MB -#define DEFAULT_BUCKET_SIZE 1UL << 27 -extern const std::size_t MINIMUM_ALIGNMENT; -extern const std::size_t MAXIMUM_ALIGNMENT; - -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); -bool Pke_InBucket(const void *ptr, const MemBucket *bkt); -void Pke_DebugPrint(); - -MemBucket *Pke_BeginTransientBucket(int64_t sz = DEFAULT_BUCKET_SIZE); -void Pke_EndTransientBucket(MemBucket *bkt); -void Pke_ResetBucket(MemBucket *bkt); -void Pke_MemoryFlush(); - -template <typename T> -inline T *Pke_New(MemBucket *bucket = nullptr) { - void *ptr = nullptr; - if (bucket) { - ptr = Pke_New(sizeof(T), alignof(T), bucket); - } else { - ptr = Pke_New(sizeof(T), alignof(T)); - } - if IS_CONSTRUCTIBLE(T) { - return new (ptr) T{}; - } - return reinterpret_cast<T *>(ptr); -} -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, alignof(T), bucket)); - } else { - ptr = static_cast<char *>(Pke_New(sizeof(T) * count, alignof(T))); - } - if IS_CONSTRUCTIBLE(T) { - for (long i = 0; i < count; ++i) { - new (ptr + (i * sizeof(T))) T{}; - } - } - return reinterpret_cast<T *>(ptr); -} -template <typename T> -inline void Pke_Delete(const void *ptr, MemBucket *bucket = nullptr) { - if IS_DESTRUCTIBLE(T) { - reinterpret_cast<const T *>(ptr)->~T(); - } - if (bucket) { - return Pke_Delete(ptr, sizeof(T), bucket); - } else { - return Pke_Delete(ptr, sizeof(T)); - } -} -template <typename T> -inline void Pke_Delete(const void *ptr, long count, MemBucket *bucket = nullptr) { - if IS_DESTRUCTIBLE(T) { - for (long i = 0; i < count; ++i) { - reinterpret_cast<const T *>(reinterpret_cast<const char *>(ptr) + (i * sizeof(T)))->~T(); - } - } - if (bucket) { - return Pke_Delete(ptr, sizeof(T) * count, bucket); - } else { - return Pke_Delete(ptr, sizeof(T) * count); - } -} - -#endif /* PKE_MEMORY_HPP */ |
