| 462 | } |
| 463 | |
| 464 | void |
| 465 | MemoryPool::insert_free_alloc(FreeHeader* freed) |
| 466 | { |
| 467 | // Find free alloc freed size or larger |
| 468 | FreeHeader* alloc = free_index_.find(freed->size(), pool_ptr_); |
| 469 | // If found |
| 470 | if (alloc) { |
| 471 | FreeHeader* smaller = alloc->smaller_free(pool_ptr_); |
| 472 | |
| 473 | // Insert into list |
| 474 | freed->set_larger_free(alloc, pool_ptr_); |
| 475 | alloc->set_smaller_free(freed, pool_ptr_); |
| 476 | if (smaller) { |
| 477 | smaller->set_larger_free(freed, pool_ptr_); |
| 478 | freed->set_smaller_free(smaller, pool_ptr_); |
| 479 | } |
| 480 | // Else freed the largest alloc |
| 481 | } else { |
| 482 | if (freed != largest_free_) { |
| 483 | freed->set_smaller_free(largest_free_, pool_ptr_); |
| 484 | if (largest_free_) { |
| 485 | largest_free_->set_larger_free(freed, pool_ptr_); |
| 486 | } |
| 487 | largest_free_ = freed; |
| 488 | } |
| 489 | } |
| 490 | |
| 491 | // Insert and replace alloc if necessary |
| 492 | free_index_.add(freed); |
| 493 | } |
| 494 | |
| 495 | unsigned char* |
| 496 | MemoryPool::allocate(FreeHeader* free_block, size_t alloc_size) |
nothing calls this directly
no test coverage detected