2021-06-27 21:25:29 +00:00
/***
Copyright ( C ) 2021 J Reece Wilson ( a / k / a " Reece " ) . All rights reserved .
File : DefaultHeap . cpp
Date : 2021 - 6 - 13
Author : Reece
* * */
2021-09-30 14:57:41 +00:00
# include <Source/RuntimeInternal.hpp>
2021-06-27 21:25:29 +00:00
# include "Memory.hpp"
# include "DefaultHeap.hpp"
2022-07-21 09:59:02 +00:00
# include "Heap.hpp"
2022-12-08 19:34:15 +00:00
# include <Source/Debug/MemoryCrunch.hpp>
2021-06-27 21:25:29 +00:00
namespace Aurora : : Memory
{
2022-12-08 19:34:15 +00:00
struct DefaultHeap : BaseHeap
2021-06-27 21:25:29 +00:00
{
2022-07-21 09:59:02 +00:00
AuSPtr < Heap > AllocateDivision ( AuUInt32 heap , AuUInt32 alignment ) override
{
2022-07-21 22:23:16 +00:00
return AllocateDivisionGlobal ( this , heap , alignment ) ;
2022-07-21 09:59:02 +00:00
}
2021-06-27 21:25:29 +00:00
void * _ZAlloc ( Types : : size_t length ) override
{
return Aurora : : Memory : : _ZAlloc ( length ) ;
}
void * _ZAlloc ( Types : : size_t length , Types : : size_t align ) override
{
return Aurora : : Memory : : _ZAlloc ( length , align ) ;
}
Types : : size_t GetChunkSize ( const void * head ) override
{
return Aurora : : Memory : : GetChunkSize ( head ) ;
}
void * _FAlloc ( Types : : size_t length ) override
{
return Aurora : : Memory : : _FAlloc ( length ) ;
}
void * _FAlloc ( Types : : size_t length , Types : : size_t align ) override
{
return Aurora : : Memory : : _FAlloc ( length , align ) ;
}
void * _ZRealloc ( void * buffer , Types : : size_t length , Types : : size_t align ) override
{
return Aurora : : Memory : : _ZRealloc ( buffer , length , align ) ;
}
void * _ZRealloc ( void * buffer , Types : : size_t length ) override
{
return Aurora : : Memory : : _ZRealloc ( buffer , length ) ;
}
void * _FRealloc ( void * buffer , Types : : size_t length , Types : : size_t align ) override
{
return Aurora : : Memory : : _FRealloc ( buffer , length , align ) ;
}
void * _FRealloc ( void * buffer , Types : : size_t length ) override
{
return Aurora : : Memory : : _FRealloc ( buffer , length ) ;
}
void _Free ( void * buffer ) override
{
return Aurora : : Memory : : _Free ( buffer ) ;
}
2022-01-18 19:31:15 +00:00
AuSPtr < Heap > GetSelfReference ( ) override
{
return { } ;
}
2022-12-08 19:34:15 +00:00
void UpdateStats ( ) override
{
auto other = AuDebug : : gReserveHeap - > GetStats ( ) ;
this - > stats . bIsSharedWithOtherHeaps = true ;
this - > stats . uBytesLiveCounter = gBytesCounterAllocated + other . uBytesLiveCounter ;
this - > stats . uBytesPeakCounter = AuMax ( gBytesCounterPeak , other . uBytesPeakCounter ) ;
if ( ! this - > stats . uBytesCapacity )
{
this - > stats . uBytesCapacity = Aurora : : HWInfo : : GetMemStatSystem /*should be process, but process is this with extra steps.*/ ( ) . value_or ( AuHwInfo : : RamStat { } ) . qwAvailable ;
}
}
2021-06-27 21:25:29 +00:00
} ;
static DefaultHeap gDefaultAllocation ;
AUKN_SYM Heap * GetDefaultDiscontiguousHeapNew ( )
{
return & gDefaultAllocation ;
}
AUKN_SYM void GetDefaultDiscontiguousHeapRelease ( Heap * heap ) { }
}