[*] Update behaviour of CppHeapWrapper to make it moron proof
This commit is contained in:
parent
9a855f36d0
commit
b1e02c7e72
@ -141,7 +141,7 @@ namespace Aurora::Memory
|
|||||||
return this->GetHeapRaw()->Free(p);
|
return this->GetHeapRaw()->Free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(AU_LANG_CPP_23)
|
#if defined(AU_LANG_CPP_23_)
|
||||||
std::allocation_result<T *> allocate_at_least(const size_t count)
|
std::allocation_result<T *> allocate_at_least(const size_t count)
|
||||||
{
|
{
|
||||||
auto pThat = this->allocate(count);
|
auto pThat = this->allocate(count);
|
||||||
@ -217,6 +217,15 @@ namespace Aurora::Memory
|
|||||||
this->deallocate_object(p);
|
this->deallocate_object(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsInitialized() const
|
||||||
|
{
|
||||||
|
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
||||||
|
return bool(this->pHeap);
|
||||||
|
#else
|
||||||
|
return bool(this->spHeap);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<Heap> GetHeap() const
|
std::shared_ptr<Heap> GetHeap() const
|
||||||
{
|
{
|
||||||
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
||||||
@ -235,22 +244,39 @@ namespace Aurora::Memory
|
|||||||
|
|
||||||
Heap *GetHeapRaw() const
|
Heap *GetHeapRaw() const
|
||||||
{
|
{
|
||||||
|
Heap *pRet {};
|
||||||
|
|
||||||
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
||||||
{
|
{
|
||||||
return this->pFuckCppRetardsFixYourWorthlessSpec->GetHeapRaw();
|
pRet = this->pFuckCppRetardsFixYourWorthlessSpec->GetHeapRaw();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
||||||
return this->pHeap;
|
pRet = this->pHeap;
|
||||||
#else
|
#else
|
||||||
return this->spHeap.get();
|
pRet = this->spHeap.get();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pRet)
|
||||||
|
{
|
||||||
|
return pRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
||||||
|
return this->pHeap = __audetail::gDefaultDiscontiguousHeap;
|
||||||
|
#else
|
||||||
|
return (this->spHeap = __audetail::gDefaultDiscontiguousHeapShared).get();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetHeap(std::shared_ptr<Heap> pHeap)
|
void SetHeap(std::shared_ptr<Heap> pHeap)
|
||||||
{
|
{
|
||||||
|
if (this->IsInitialized())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
||||||
{
|
{
|
||||||
this->pFuckCppRetardsFixYourWorthlessSpec->SetHeap(pHeap);
|
this->pFuckCppRetardsFixYourWorthlessSpec->SetHeap(pHeap);
|
||||||
@ -266,6 +292,10 @@ namespace Aurora::Memory
|
|||||||
|
|
||||||
void SetHeapRaw(Heap *pHeap)
|
void SetHeapRaw(Heap *pHeap)
|
||||||
{
|
{
|
||||||
|
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
if (this->pFuckCppRetardsFixYourWorthlessSpec)
|
||||||
{
|
{
|
||||||
this->pFuckCppRetardsFixYourWorthlessSpec->SetHeapRaw(pHeap);
|
this->pFuckCppRetardsFixYourWorthlessSpec->SetHeapRaw(pHeap);
|
||||||
@ -291,10 +321,10 @@ namespace Aurora::Memory
|
|||||||
// should be sizeof(void *) * 4 = [pHeap, pControlBlock, pParent, pSingleThreadChild]
|
// should be sizeof(void *) * 4 = [pHeap, pControlBlock, pParent, pSingleThreadChild]
|
||||||
// nor not. it doesnt matter.
|
// nor not. it doesnt matter.
|
||||||
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
#if defined(AU_NO_COMPRESS_CPPHEAP_WRAPPER)
|
||||||
std::shared_ptr<void> spHeap;
|
mutable std::shared_ptr<void> spHeap;
|
||||||
Heap *pHeap {};
|
mutable Heap *pHeap {};
|
||||||
#else
|
#else
|
||||||
std::shared_ptr<Heap> spHeap;
|
mutable std::shared_ptr<Heap> spHeap;
|
||||||
#endif
|
#endif
|
||||||
mutable CppHeapWrapper *pFuckCppRetardsFixYourWorthlessSpec {};
|
mutable CppHeapWrapper *pFuckCppRetardsFixYourWorthlessSpec {};
|
||||||
mutable CppHeapWrapper *pFuckCppRetardsFixYourWorthlessSpec2 {};
|
mutable CppHeapWrapper *pFuckCppRetardsFixYourWorthlessSpec2 {};
|
||||||
|
@ -21,6 +21,12 @@ namespace Aurora::Memory
|
|||||||
#include "HeapStats.hpp"
|
#include "HeapStats.hpp"
|
||||||
#include "Heap.hpp"
|
#include "Heap.hpp"
|
||||||
|
|
||||||
|
namespace __audetail
|
||||||
|
{
|
||||||
|
inline auto gDefaultDiscontiguousHeap = Aurora::Memory::GetDefaultDiscontiguousHeap();
|
||||||
|
inline auto gDefaultDiscontiguousHeapShared = Aurora::Memory::GetDefaultDiscontiguousHeapShared();
|
||||||
|
}
|
||||||
|
|
||||||
#include "Cache.hpp"
|
#include "Cache.hpp"
|
||||||
#include "SwapLock.hpp"
|
#include "SwapLock.hpp"
|
||||||
#include "Transition.hpp"
|
#include "Transition.hpp"
|
||||||
|
@ -142,11 +142,6 @@ auto AuNullPointer()
|
|||||||
return Aurora::Memory::Heap::NullUniquePointer<T>();
|
return Aurora::Memory::Heap::NullUniquePointer<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace __audetail
|
|
||||||
{
|
|
||||||
inline AuMemory::Heap *gDefaultDiscontiguousHeap = AuMemory::GetDefaultDiscontiguousHeap();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T, class ...Args>
|
template <class T, class ...Args>
|
||||||
AuHUPOf_t<T> AuNewClassArrayUnique(AuUInt uElements, Args &&... fillCtr)
|
AuHUPOf_t<T> AuNewClassArrayUnique(AuUInt uElements, Args &&... fillCtr)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user