| 405 | } |
| 406 | |
| 407 | void |
| 408 | MemoryPool::join_free_allocs(FreeHeader* freed) |
| 409 | { |
| 410 | // Check adjacent |
| 411 | if (joinable_next(freed)) { |
| 412 | FreeHeader* next_free = reinterpret_cast<FreeHeader*>(freed->next_adjacent()); |
| 413 | remove_free_alloc(next_free); |
| 414 | freed->join_next(); |
| 415 | // Adjust psize of adjacent |
| 416 | AllocHeader* next = freed->next_adjacent(); |
| 417 | if (includes(next)) { |
| 418 | next->set_prev_size(static_cast<int>(freed->size())); |
| 419 | } |
| 420 | } |
| 421 | if (joinable_prev(freed)) { |
| 422 | FreeHeader* prev_free = reinterpret_cast<FreeHeader*>(freed->prev_adjacent()); |
| 423 | remove_free_alloc(prev_free); |
| 424 | // Join prev with freed |
| 425 | prev_free->join_next(); |
| 426 | insert_free_alloc(prev_free); |
| 427 | // Adjust psize of adjacent |
| 428 | AllocHeader* next = prev_free->next_adjacent(); |
| 429 | if (includes(next)) { |
| 430 | next->set_prev_size(static_cast<int>(prev_free->size())); |
| 431 | } |
| 432 | } else { |
| 433 | insert_free_alloc(freed); |
| 434 | } |
| 435 | } |
| 436 | |
| 437 | void |
| 438 | MemoryPool::remove_free_alloc(FreeHeader* block_to_alloc) |
nothing calls this directly
no test coverage detected