| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "CmPrerequisitesUtil.h"
- #include "CmMemStack.h"
- namespace BansheeEngine
- {
- MemStackInternal<1024 * 1024>* MemStack::ThreadMemStack = nullptr;
- void MemStack::beginThread()
- {
- if(ThreadMemStack != nullptr)
- endThread();
- ThreadMemStack = cm_new<MemStackInternal<1024 * 1024>>();
- }
- void MemStack::endThread()
- {
- if(ThreadMemStack != nullptr)
- {
- cm_delete(ThreadMemStack);
- ThreadMemStack = nullptr;
- }
- }
- UINT8* MemStack::alloc(UINT32 numBytes)
- {
- assert(ThreadMemStack != nullptr && "Stack allocation failed. Did you call beginThread?");
- return ThreadMemStack->alloc(numBytes);
- }
- void MemStack::deallocLast(UINT8* data)
- {
- assert(ThreadMemStack != nullptr && "Stack deallocation failed. Did you call beginThread?");
- ThreadMemStack->dealloc(data);
- }
- void* stackAlloc(UINT32 numBytes)
- {
- return (void*)MemStack::alloc(numBytes);
- }
- void stackDeallocLast(void* data)
- {
- return MemStack::deallocLast((UINT8*)data);
- }
- }
|