оптимизации pool_free()

This commit is contained in:
Kolan Sh 2011-04-29 22:18:10 +04:00
parent d8e8aa5962
commit b006aa66a8
1 changed files with 4 additions and 9 deletions

View File

@ -74,27 +74,22 @@ inline void pool_free(void *p)
struct block_s *b1 = (struct block_s *)(p - 2 * sizeof(struct block_s *)),
*b0 = b1->prev,
*b2 = b1->next,
*f1 = free_pool;
*b2 = b1->next;
// cut block from free list
if (b0)
b0->next = b2;
if (b2)
b2->prev = b0;
// f1, b1
if (f1) {
b1->next = f1;
f1->prev = b1;
if (free_pool) {
b1->next = free_pool;
free_pool->prev = b1;
}
else
b1->next = NULL;
// free_pool
free_pool = b2;
// busy_pool
if (busy_pool == b1)
busy_pool = b2;
}