aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2016-03-23 17:44:04 +0300
committerValentin Bartenev <vbart@nginx.com>2016-03-23 17:44:04 +0300
commit21dfe90a4e7015c0e6530208c2e6a4d8a9284ce1 (patch)
tree6ee714a910963f6db2b0d085f627036db2e4eb4e /src
parentb94eb1dfe6d40acc4ff5ba61284be1279895c9ed (diff)
downloadnginx-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')
-rw-r--r--src/core/ngx_palloc.c59
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);
}