]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[OPTIM] ebtree: inline ebst_lookup_len and ebis_lookup_len
authorWilly Tarreau <w@1wt.eu>
Tue, 4 Jan 2011 13:33:13 +0000 (14:33 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 4 Jan 2011 13:44:05 +0000 (14:44 +0100)
(from ebtree 6.0.5)

Both of them are very short and rely on another non-inlined lookup function,
so it's pointless to have them as pure functions, it wastes space.
(cherry picked from commit 1e68d6fef815f759304d4cc0e65f957689e19a7a)

ebtree/ebistree.c
ebtree/ebistree.h
ebtree/ebsttree.c
ebtree/ebsttree.h

index 1b8c912e2c0711d47f07c3df5bead8ec38cceb11..629889c5b6135ee9dbe302341a19b042ab520891 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Elastic Binary Trees - exported functions for Indirect String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,6 @@
 /* Consult ebistree.h for more details about those functions */
 
 #include "ebistree.h"
-#include "ebimtree.h"
 
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
  * It's the caller's reponsibility to use this function only on trees which
@@ -32,21 +31,6 @@ REGPRM2 struct ebpt_node *ebis_lookup(struct eb_root *root, const char *x)
        return __ebis_lookup(root, x);
 }
 
-/* Find the first occurence of a length <len> string <x> in the tree <root>.
- * It's the caller's reponsibility to use this function only on trees which
- * only contain zero-terminated strings, and that no null character is present
- * in string <x> in the first <len> chars. If none can be found, return NULL.
- */
-REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len)
-{
-       struct ebpt_node *node;
-
-       node = ebim_lookup(root, x, len);
-       if (!node || ((const char *)node->key)[len] != 0)
-               return NULL;
-       return node;
-}
-
 /* Insert ebpt_node <new> into subtree starting at node root <root>. Only
  * new->key needs be set with the zero-terminated string key. The ebpt_node is
  * returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
index a82130aa36836b2ef83ed45d29c583f802a7beda..1110eea3d416eeb17945ec4f9b0836b8ee14c560 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Elastic Binary Trees - macros to manipulate Indirect String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,6 +23,7 @@
 #include <string.h>
 #include "ebtree.h"
 #include "ebpttree.h"
+#include "ebimtree.h"
 
 /* These functions and macros rely on Pointer nodes and use the <key> entry as
  * a pointer to an indirect key. Most operations are performed using ebpt_*.
  * in ebistree.c, which simply relies on their inline version.
  */
 REGPRM2 struct ebpt_node *ebis_lookup(struct eb_root *root, const char *x);
-REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len);
 REGPRM2 struct ebpt_node *ebis_insert(struct eb_root *root, struct ebpt_node *new);
 
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+static forceinline struct ebpt_node *
+ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+       struct ebpt_node *node;
+
+       node = ebim_lookup(root, x, len);
+       if (!node || ((const char *)node->key)[len] != 0)
+               return NULL;
+       return node;
+}
+
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
  * It's the caller's reponsibility to use this function only on trees which
  * only contain zero-terminated strings. If none can be found, return NULL.
index a98b0f33b86fe80d36b7c78d7c688e5f47c49472..08e9ceb1b6758cbe649161a67494d0ca42e47b05 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Elastic Binary Trees - exported functions for String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,21 +31,6 @@ REGPRM2 struct ebmb_node *ebst_lookup(struct eb_root *root, const char *x)
        return __ebst_lookup(root, x);
 }
 
-/* Find the first occurence of a length <len> string <x> in the tree <root>.
- * It's the caller's reponsibility to use this function only on trees which
- * only contain zero-terminated strings, and that no null character is present
- * in string <x> in the first <len> chars. If none can be found, return NULL.
- */
-REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len)
-{
-       struct ebmb_node *node;
-
-       node = ebmb_lookup(root, x, len);
-       if (!node || node->key[len] != 0)
-               return NULL;
-       return node;
-}
-
 /* Insert ebmb_node <new> into subtree starting at node root <root>. Only
  * new->key needs be set with the zero-terminated string key. The ebmb_node is
  * returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
index 5c52d6e94d0b7a773045fb2d49b4cc0ee0733864..9c86f611e521ffeca09c38604fb2a5fb193d3521 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Elastic Binary Trees - macros to manipulate String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * in ebsttree.c, which simply relies on their inline version.
  */
 REGPRM2 struct ebmb_node *ebst_lookup(struct eb_root *root, const char *x);
-REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len);
 REGPRM2 struct ebmb_node *ebst_insert(struct eb_root *root, struct ebmb_node *new);
 
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+static forceinline struct ebmb_node *
+ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+       struct ebmb_node *node;
+
+       node = ebmb_lookup(root, x, len);
+       if (!node || node->key[len] != 0)
+               return NULL;
+       return node;
+}
+
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
  * It's the caller's reponsibility to use this function only on trees which
  * only contain zero-terminated strings. If none can be found, return NULL.