1#include <heap/seadArena.h>
2#include <nn/os.h>
3
4namespace sead
5{
6Arena::Arena() = default;
7Arena::~Arena() = default;
8
9void Arena::initialize(size_t size)
10{
11 nn::os::AllocateMemoryBlock(reinterpret_cast<uintptr_t*>(&mStart),
12 (size + 0x1FFFFF) & 0xFFFFFFFFFFE00000LL);
13 mSize = size;
14}
15
16void Arena::destroy()
17{
18 if (!mInitWithStartAddress)
19 {
20 nn::os::FreeMemoryBlock(reinterpret_cast<uintptr_t>(mStart),
21 (mSize + 0x1FFFFF) & 0xFFFFFFFFFFE00000LL);
22 }
23 mInitWithStartAddress = false;
24 mStart = nullptr;
25 mSize = 0;
26}
27
28} // namespace sead
29