Welcome! Log In Create A New Profile

Advanced

[njs] Returning an intptr_t result by rbtree comparison function

September 16, 2016 10:56AM
details: http://hg.nginx.org/njs/rev/28bc6acceb0e
branches:
changeset: 176:28bc6acceb0e
user: Igor Sysoev <igor@sysoev.ru>
date: Thu Sep 15 18:00:55 2016 +0300
description:
Returning an intptr_t result by rbtree comparison function
decreases overhead required to implement correct addresses
comparison without result truncation.

diffstat:

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(-)

diffs (96 lines):

diff -r 70e3b2fc7a8d -r 28bc6acceb0e nxt/nxt_mem_cache_pool.c
--- a/nxt/nxt_mem_cache_pool.c Thu Sep 15 17:37:52 2016 +0300
+++ b/nxt/nxt_mem_cache_pool.c Thu Sep 15 18:00:55 2016 +0300
@@ -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_
}


-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 -r 70e3b2fc7a8d -r 28bc6acceb0e nxt/nxt_rbtree.c
--- a/nxt/nxt_rbtree.c Thu Sep 15 17:37:52 2016 +0300
+++ b/nxt/nxt_rbtree.c Thu Sep 15 18:00:55 2016 +0300
@@ -176,7 +176,7 @@ nxt_rbtree_insert_fixup(nxt_rbtree_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_
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
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_rbt
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 -r 70e3b2fc7a8d -r 28bc6acceb0e nxt/nxt_rbtree.h
--- a/nxt/nxt_rbtree.h Thu Sep 15 17:37:52 2016 +0300
+++ b/nxt/nxt_rbtree.h Thu Sep 15 18:00:55 2016 +0300
@@ -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 -r 70e3b2fc7a8d -r 28bc6acceb0e nxt/test/rbtree_unit_test.c
--- a/nxt/test/rbtree_unit_test.c Thu Sep 15 17:37:52 2016 +0300
+++ b/nxt/test/rbtree_unit_test.c Thu Sep 15 18:00:55 2016 +0300
@@ -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;


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Returning an intptr_t result by rbtree comparison function

Igor Sysoev 786 September 16, 2016 10:56AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 249
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready