1 // 2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "armnnTestUtils/MockMemoryManager.hpp" 7 8 namespace armnn 9 { 10 MockMemoryManager()11MockMemoryManager::MockMemoryManager() 12 {} 13 ~MockMemoryManager()14MockMemoryManager::~MockMemoryManager() 15 {} 16 Manage(unsigned int numBytes)17MockMemoryManager::Pool* MockMemoryManager::Manage(unsigned int numBytes) 18 { 19 if (!m_FreePools.empty()) 20 { 21 Pool* res = m_FreePools.back(); 22 m_FreePools.pop_back(); 23 res->Reserve(numBytes); 24 return res; 25 } 26 else 27 { 28 m_Pools.push_front(Pool(numBytes)); 29 return &m_Pools.front(); 30 } 31 } 32 Allocate(MockMemoryManager::Pool * pool)33void MockMemoryManager::Allocate(MockMemoryManager::Pool* pool) 34 { 35 m_FreePools.push_back(pool); 36 } 37 GetPointer(MockMemoryManager::Pool * pool)38void* MockMemoryManager::GetPointer(MockMemoryManager::Pool* pool) 39 { 40 return pool->GetPointer(); 41 } 42 Acquire()43void MockMemoryManager::Acquire() 44 { 45 for (Pool& pool : m_Pools) 46 { 47 pool.Acquire(); 48 } 49 } 50 Release()51void MockMemoryManager::Release() 52 { 53 for (Pool& pool : m_Pools) 54 { 55 pool.Release(); 56 } 57 } 58 Pool(unsigned int numBytes)59MockMemoryManager::Pool::Pool(unsigned int numBytes) 60 : m_Size(numBytes) 61 , m_Pointer(nullptr) 62 {} 63 ~Pool()64MockMemoryManager::Pool::~Pool() 65 { 66 if (m_Pointer) 67 { 68 Release(); 69 } 70 } 71 GetPointer()72void* MockMemoryManager::Pool::GetPointer() 73 { 74 return m_Pointer; 75 } 76 Reserve(unsigned int numBytes)77void MockMemoryManager::Pool::Reserve(unsigned int numBytes) 78 { 79 m_Size = std::max(m_Size, numBytes); 80 } 81 Acquire()82void MockMemoryManager::Pool::Acquire() 83 { 84 m_Pointer = ::operator new(size_t(m_Size)); 85 } 86 Release()87void MockMemoryManager::Pool::Release() 88 { 89 ::operator delete(m_Pointer); 90 m_Pointer = nullptr; 91 } 92 93 } // namespace armnn 94