summaryrefslogtreecommitdiff
path: root/src/memory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.hpp')
-rw-r--r--src/memory.hpp85
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 */