| 65 | } |
| 66 | |
| 67 | void ISimpleLifetimeManager::start_lifetime(void *obj) |
| 68 | { |
| 69 | ARM_COMPUTE_ERROR_ON(obj == nullptr); |
| 70 | ARM_COMPUTE_ERROR_ON_MSG(_active_elements.find(obj) != std::end(_active_elements), |
| 71 | "Memory object is already registered!"); |
| 72 | |
| 73 | // Check if there is a free blob |
| 74 | if (_free_blobs.empty()) |
| 75 | { |
| 76 | _occupied_blobs.emplace_front(Blob{obj, 0, 0, {obj}}); |
| 77 | } |
| 78 | else |
| 79 | { |
| 80 | _occupied_blobs.splice(std::begin(_occupied_blobs), _free_blobs, std::begin(_free_blobs)); |
| 81 | _occupied_blobs.front().id = obj; |
| 82 | } |
| 83 | |
| 84 | // Insert object in groups and mark its finalized state to false |
| 85 | _active_elements.insert(std::make_pair(obj, obj)); |
| 86 | } |
| 87 | |
| 88 | void ISimpleLifetimeManager::end_lifetime(void *obj, IMemory &obj_memory, size_t size, size_t alignment) |
| 89 | { |