void OCLFPGADevice::free()

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));
  }
}