Comments, adding Region to Heap
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, macos-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled

This commit is contained in:
2026-08-15 16:07:00 -07:00
parent e358b02bea
commit ae7269e6fd
4 changed files with 20 additions and 3 deletions

View File

@@ -36,6 +36,8 @@
#include "region.h" #include "region.h"
namespace mimir { namespace mimir {
// Arena memory allocator, baed by a mimir::Region
class Arena class Arena
{ {
public: public:

View File

@@ -33,14 +33,18 @@
#include <cstddef> #include <cstddef>
#include "region.h"
namespace mimir { namespace mimir {
// Heap implementation based on Two-Level Segregated Fit (TLSF) memory allocation
class Heap class Heap
{ {
public: public:
Heap(); Heap();
~Heap(); ~Heap();
bool init(size_t minSize = 1ULL << 24, size_t maxSize = 1ULL << 32); bool init(size_t maxSize = 1ULL << 32);
// Allocate `size` bytes // Allocate `size` bytes
std::byte* alloc(size_t size); std::byte* alloc(size_t size);
@@ -50,6 +54,9 @@ public:
// Allocate `size` bytes, aligned to 64 bytes and padded to next 64-byte offset. // Allocate `size` bytes, aligned to 64 bytes and padded to next 64-byte offset.
std::byte* allocA64(size_t size); std::byte* allocA64(size_t size);
private:
Region m_region;
}; };
} // namespace mimir } // namespace mimir

View File

@@ -34,6 +34,9 @@
#include <cstddef> #include <cstddef>
namespace mimir { namespace mimir {
// Dynamically growable memory region with a contiguous address range.
// Provides OS and hardware agnostic reservation and committing of memory pages.
class Region class Region
{ {
public: public:

View File

@@ -38,6 +38,8 @@
namespace mimir { namespace mimir {
// Two-Level Segregated Fit (TLSF): http://www.gii.upv.es/tlsf/files/papers/ecrts04_tlsf.pdf
Heap::Heap() Heap::Heap()
{ {
} }
@@ -46,9 +48,12 @@ Heap::~Heap()
{ {
} }
bool Heap::init(size_t minSize, size_t maxSize) bool Heap::init(size_t maxSize)
{ {
return false; // not implemented if (!m_region.init(maxSize)) {
return false;
}
return true;
} }
// Allocate `size` bytes // Allocate `size` bytes