remove some redundant calls and checks and pass the required pointers as parameters...
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 11 Mar 2006 13:36:22 +0000 (13:36 +0000)
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 11 Mar 2006 13:36:22 +0000 (13:36 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@17589 f5534014-38df-0310-8fa8-9805f1628bb7

epan/emem.c

index 5ba74636592ea9e9755564da0a6c131c13e62ab7..4492f7639ab13728becf00baa86c68ca03d883f7 100644 (file)
@@ -853,35 +853,8 @@ se_tree_lookup32(se_tree_t *se_tree, guint32 key)
 
 
 static inline se_tree_node_t *
-se_tree_parent(se_tree_node_t *node)
+se_tree_uncle(se_tree_node_t *parent, se_tree_node_t *grandparent)
 {
-       return node->parent;
-}
-
-static inline se_tree_node_t *
-se_tree_grandparent(se_tree_node_t *node)
-{
-       se_tree_node_t *parent;
-
-       parent=se_tree_parent(node);
-       if(parent){
-               return parent->parent;
-       }
-       return NULL;
-}
-static inline se_tree_node_t *
-se_tree_uncle(se_tree_node_t *node)
-{
-       se_tree_node_t *parent, *grandparent;
-
-       parent=se_tree_parent(node);
-       if(!parent){
-               return NULL;
-       }
-       grandparent=se_tree_parent(parent);
-       if(!grandparent){
-               return NULL;
-       }
        if(parent==grandparent->left){
                return grandparent->right;
        }
@@ -889,7 +862,7 @@ se_tree_uncle(se_tree_node_t *node)
 }
 
 static inline void rb_insert_case1(se_tree_t *se_tree, se_tree_node_t *node);
-static inline void rb_insert_case2(se_tree_t *se_tree, se_tree_node_t *node);
+static inline void rb_insert_case2(se_tree_t *se_tree, se_tree_node_t *node, se_tree_node_t *parent);
 
 static inline void
 rotate_left(se_tree_t *se_tree, se_tree_node_t *node)
@@ -934,13 +907,8 @@ rotate_right(se_tree_t *se_tree, se_tree_node_t *node)
 }
 
 static inline void
-rb_insert_case5(se_tree_t *se_tree, se_tree_node_t *node)
+rb_insert_case5(se_tree_t *se_tree, se_tree_node_t *node, se_tree_node_t *parent, se_tree_node_t *grandparent)
 {
-       se_tree_node_t *grandparent;
-       se_tree_node_t *parent;
-
-       parent=se_tree_parent(node);
-       grandparent=se_tree_parent(parent);
        parent->rb_color=SE_TREE_RB_COLOR_BLACK;
        grandparent->rb_color=SE_TREE_RB_COLOR_RED;
        if( (node==parent->left) && (parent==grandparent->left) ){
@@ -951,16 +919,8 @@ rb_insert_case5(se_tree_t *se_tree, se_tree_node_t *node)
 }
 
 static inline void
-rb_insert_case4(se_tree_t *se_tree, se_tree_node_t *node)
+rb_insert_case4(se_tree_t *se_tree, se_tree_node_t *node, se_tree_node_t *parent, se_tree_node_t *grandparent)
 {
-       se_tree_node_t *grandparent;
-       se_tree_node_t *parent;
-
-       parent=se_tree_parent(node);
-       grandparent=se_tree_parent(parent);
-       if(!grandparent){
-               return;
-       }
        if( (node==parent->right) && (parent==grandparent->left) ){
                rotate_left(se_tree, parent);
                node=node->left;
@@ -968,40 +928,36 @@ rb_insert_case4(se_tree_t *se_tree, se_tree_node_t *node)
                rotate_right(se_tree, parent);
                node=node->right;
        }
-       rb_insert_case5(se_tree, node);
+       rb_insert_case5(se_tree, node, parent, grandparent);
 }
 
+/* parent is guaranteed to be non-NULL */
 static inline void
-rb_insert_case3(se_tree_t *se_tree, se_tree_node_t *node)
+rb_insert_case3(se_tree_t *se_tree, se_tree_node_t *node, se_tree_node_t *parent)
 {
        se_tree_node_t *grandparent;
-       se_tree_node_t *parent;
        se_tree_node_t *uncle;
 
-       uncle=se_tree_uncle(node);
+       grandparent=parent->parent;
+       uncle=se_tree_uncle(parent, grandparent);
        if(uncle && (uncle->rb_color==SE_TREE_RB_COLOR_RED)){
-               parent=se_tree_parent(node);
                parent->rb_color=SE_TREE_RB_COLOR_BLACK;
                uncle->rb_color=SE_TREE_RB_COLOR_BLACK;
-               grandparent=se_tree_grandparent(node);
                grandparent->rb_color=SE_TREE_RB_COLOR_RED;
                rb_insert_case1(se_tree, grandparent);
        } else {
-               rb_insert_case4(se_tree, node);
+               rb_insert_case4(se_tree, node, parent, grandparent);
        }
 }
 
+/* parent is guaranteed to be non-NULL */
 static inline void
-rb_insert_case2(se_tree_t *se_tree, se_tree_node_t *node)
+rb_insert_case2(se_tree_t *se_tree, se_tree_node_t *node, se_tree_node_t *parent)
 {
-       se_tree_node_t *parent;
-
-       parent=se_tree_parent(node);
-       /* parent is always non-NULL here */
        if(parent->rb_color==SE_TREE_RB_COLOR_BLACK){
                return;
        }
-       rb_insert_case3(se_tree, node);
+       rb_insert_case3(se_tree, node, parent);
 }
 
 static inline void
@@ -1009,12 +965,12 @@ rb_insert_case1(se_tree_t *se_tree, se_tree_node_t *node)
 {
        se_tree_node_t *parent;
 
-       parent=se_tree_parent(node);
+       parent=node->parent;
        if(!parent){
                node->rb_color=SE_TREE_RB_COLOR_BLACK;
                return;
        }
-       rb_insert_case2(se_tree, node);
+       rb_insert_case2(se_tree, node, parent);
 }
 
 /* insert a new node in the tree. if this node matches an already existing node