| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "BsPrerequisitesUtil.h"
- #include "BsMemStack.h"
- namespace BansheeEngine
- {
- MemStackInternal<1024 * 1024>* MemStack::ThreadMemStack = nullptr;
- void MemStack::beginThread()
- {
- if(ThreadMemStack != nullptr)
- endThread();
- ThreadMemStack = bs_new<MemStackInternal<1024 * 1024>>();
- }
- void MemStack::endThread()
- {
- if(ThreadMemStack != nullptr)
- {
- bs_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* bs_stack_alloc(UINT32 numBytes)
- {
- return (void*)MemStack::alloc(numBytes);
- }
- void bs_stack_free(void* data)
- {
- return MemStack::deallocLast((UINT8*)data);
- }
- }
|