From dfe15745f25a67b08081dcfc81e6283727dfa359 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 15 Sep 2016 18:00:55 +0300 Subject: [PATCH] Returning an intptr_t result by rbtree comparison function decreases overhead required to implement correct addresses comparison without result truncation. --- nxt/nxt_mem_cache_pool.c | 4 ++-- nxt/nxt_rbtree.c | 8 ++++---- nxt/nxt_rbtree.h | 2 +- nxt/test/rbtree_unit_test.c | 7 +++---- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/nxt/nxt_mem_cache_pool.c b/nxt/nxt_mem_cache_pool.c index 272bc199..06a47d53 100644 --- a/nxt/nxt_mem_cache_pool.c +++ b/nxt/nxt_mem_cache_pool.c @@ -131,7 +131,7 @@ static nxt_mem_cache_block_t * nxt_mem_cache_alloc_cluster(nxt_mem_cache_pool_t *pool); static void *nxt_mem_cache_alloc_large(nxt_mem_cache_pool_t *pool, size_t alignment, size_t size); -static nxt_int_t nxt_mem_cache_rbtree_compare(nxt_rbtree_node_t *node1, +static intptr_t nxt_mem_cache_rbtree_compare(nxt_rbtree_node_t *node1, nxt_rbtree_node_t *node2); static nxt_mem_cache_block_t *nxt_mem_cache_find_block(nxt_rbtree_t *tree, u_char *p); @@ -597,7 +597,7 @@ nxt_mem_cache_alloc_large(nxt_mem_cache_pool_t *pool, size_t alignment, } -static nxt_int_t +static intptr_t nxt_mem_cache_rbtree_compare(nxt_rbtree_node_t *node1, nxt_rbtree_node_t *node2) { nxt_mem_cache_block_t *block1, *block2; diff --git a/nxt/nxt_rbtree.c b/nxt/nxt_rbtree.c index c497f6c5..aa38f55c 100644 --- a/nxt/nxt_rbtree.c +++ b/nxt/nxt_rbtree.c @@ -176,7 +176,7 @@ nxt_rbtree_insert_fixup(nxt_rbtree_node_t *node) nxt_rbtree_node_t * nxt_rbtree_find(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) { - nxt_int_t n; + intptr_t n; nxt_rbtree_node_t *node, *next, *sentinel; nxt_rbtree_compare_t compare; @@ -210,7 +210,7 @@ nxt_rbtree_find(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) nxt_rbtree_node_t * nxt_rbtree_find_less_or_equal(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) { - nxt_int_t n; + intptr_t n; nxt_rbtree_node_t *node, *retval, *next, *sentinel; nxt_rbtree_compare_t compare; @@ -247,7 +247,7 @@ nxt_rbtree_find_less_or_equal(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) nxt_rbtree_node_t * nxt_rbtree_find_greater_or_equal(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) { - nxt_int_t n; + intptr_t n; nxt_rbtree_node_t *node, *retval, *next, *sentinel; nxt_rbtree_compare_t compare; @@ -284,7 +284,7 @@ nxt_rbtree_find_greater_or_equal(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) void nxt_rbtree_delete(nxt_rbtree_t *tree, nxt_rbtree_part_t *part) { - nxt_uint_t color; + uint8_t color; nxt_rbtree_node_t *node, *sentinel, *subst, *child; node = (nxt_rbtree_node_t *) part; diff --git a/nxt/nxt_rbtree.h b/nxt/nxt_rbtree.h index 00ffb650..00adc8bd 100644 --- a/nxt/nxt_rbtree.h +++ b/nxt/nxt_rbtree.h @@ -39,7 +39,7 @@ typedef struct { } nxt_rbtree_t; -typedef nxt_int_t (*nxt_rbtree_compare_t)(nxt_rbtree_node_t *node1, +typedef intptr_t (*nxt_rbtree_compare_t)(nxt_rbtree_node_t *node1, nxt_rbtree_node_t *node2); diff --git a/nxt/test/rbtree_unit_test.c b/nxt/test/rbtree_unit_test.c index 4817b55a..5eeed149 100644 --- a/nxt/test/rbtree_unit_test.c +++ b/nxt/test/rbtree_unit_test.c @@ -20,7 +20,7 @@ typedef struct { } nxt_rbtree_test_t; -static nxt_int_t rbtree_unit_test_comparison(nxt_rbtree_node_t *node1, +static intptr_t rbtree_unit_test_comparison(nxt_rbtree_node_t *node1, nxt_rbtree_node_t *node2); static nxt_int_t rbtree_unit_test_compare(uint32_t key1, uint32_t key2); static int nxt_cdecl rbtree_unit_test_sort_cmp(const void *one, @@ -132,9 +132,8 @@ fail: } -static nxt_int_t -rbtree_unit_test_comparison(nxt_rbtree_node_t *node1, - nxt_rbtree_node_t *node2) +static intptr_t +rbtree_unit_test_comparison(nxt_rbtree_node_t *node1, nxt_rbtree_node_t *node2) { nxt_rbtree_test_t *item1, *item2; -- 2.47.3