diff options
author | Valentin Bartenev <vbart@nginx.com> | 2016-03-23 17:44:04 +0300 |
---|---|---|
committer | Valentin Bartenev <vbart@nginx.com> | 2016-03-23 17:44:04 +0300 |
commit | 21dfe90a4e7015c0e6530208c2e6a4d8a9284ce1 (patch) | |
tree | 6ee714a910963f6db2b0d085f627036db2e4eb4e /src/core/ngx_palloc.c | |
parent | b94eb1dfe6d40acc4ff5ba61284be1279895c9ed (diff) | |
download | nginx-21dfe90a4e7015c0e6530208c2e6a4d8a9284ce1.tar.gz nginx-21dfe90a4e7015c0e6530208c2e6a4d8a9284ce1.zip |
Core: introduced the ngx_palloc_small() function.
It deduplicates some code for allocations from memory pool.
No functional changes.
Diffstat (limited to 'src/core/ngx_palloc.c')
-rw-r--r-- | src/core/ngx_palloc.c | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/src/core/ngx_palloc.c b/src/core/ngx_palloc.c index 48a76d978..587a1e587 100644 --- a/src/core/ngx_palloc.c +++ b/src/core/ngx_palloc.c @@ -9,6 +9,8 @@ #include <ngx_core.h> +static ngx_inline void *ngx_palloc_small(ngx_pool_t *pool, size_t size, + ngx_uint_t align); static void *ngx_palloc_block(ngx_pool_t *pool, size_t size); static void *ngx_palloc_large(ngx_pool_t *pool, size_t size); @@ -120,60 +122,51 @@ ngx_reset_pool(ngx_pool_t *pool) void * ngx_palloc(ngx_pool_t *pool, size_t size) { - u_char *m; - ngx_pool_t *p; - if (size <= pool->max) { + return ngx_palloc_small(pool, size, 1); + } - p = pool->current; - - do { - m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT); - - if ((size_t) (p->d.end - m) >= size) { - p->d.last = m + size; - - return m; - } - - p = p->d.next; + return ngx_palloc_large(pool, size); +} - } while (p); - return ngx_palloc_block(pool, size); +void * +ngx_pnalloc(ngx_pool_t *pool, size_t size) +{ + if (size <= pool->max) { + return ngx_palloc_small(pool, size, 0); } return ngx_palloc_large(pool, size); } -void * -ngx_pnalloc(ngx_pool_t *pool, size_t size) +static ngx_inline void * +ngx_palloc_small(ngx_pool_t *pool, size_t size, ngx_uint_t align) { u_char *m; ngx_pool_t *p; - if (size <= pool->max) { - - p = pool->current; + p = pool->current; - do { - m = p->d.last; + do { + m = p->d.last; - if ((size_t) (p->d.end - m) >= size) { - p->d.last = m + size; + if (align) { + m = ngx_align_ptr(m, NGX_ALIGNMENT); + } - return m; - } + if ((size_t) (p->d.end - m) >= size) { + p->d.last = m + size; - p = p->d.next; + return m; + } - } while (p); + p = p->d.next; - return ngx_palloc_block(pool, size); - } + } while (p); - return ngx_palloc_large(pool, size); + return ngx_palloc_block(pool, size); } |