MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / insert_free_alloc

Method insert_free_alloc

dds/DCPS/MemoryPool.cpp:464–493  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

462}
463
464void
465MemoryPool::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
495unsigned char*
496MemoryPool::allocate(FreeHeader* free_block, size_t alloc_size)

Callers

nothing calls this directly

Calls 6

smaller_freeMethod · 0.80
set_larger_freeMethod · 0.80
set_smaller_freeMethod · 0.80
findMethod · 0.45
sizeMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected