in src/oclfpga/oclfpga_device.cc [177:192]
void OCLFPGADevice::free(focl_mem_off_t offset) {
auto iter = _mem_chunks.begin();
while (iter != _mem_chunks.end() && iter->offset < offset) iter++;
if (iter == _mem_chunks.end() || iter->offset != offset || !iter->occupied) {
return;
}
iter->occupied = false;
if (iter != _mem_chunks.begin() && !std::prev(iter)->occupied) iter--;
while (std::next(iter) != _mem_chunks.end() && !std::next(iter)->occupied) {
iter->size += std::next(iter)->size;
_mem_chunks.erase(std::next(iter));
}
}