|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Resend][PATCH 14/17] rbtree: place easiest case first in rb_erase()
On Thu, 2017-06-01 at 02:50 +0530, Praveen Kumar wrote:
> --- a/xen/common/rbtree.c
> +++ b/xen/common/rbtree.c
> @@ -376,18 +376,29 @@ static void __rb_erase_color(struct rb_node
> *node, struct rb_node *parent,
>
> void rb_erase(struct rb_node *node, struct rb_root *root)
> {
> - struct rb_node *child, *parent;
> + struct rb_node *child = node->rb_right, *tmp = node->rb_left;
> + struct rb_node *parent;
> int color;
>
> - if (!node->rb_left)
> - child = node->rb_right;
> - else if (!node->rb_right)
> - child = node->rb_left;
> - else
> + if (!tmp)
> {
>
In the original Linux commit, this is:
if (!tmp) {
I know that putting the '{' on new line is more Xen-ish, but since the
file is going to end up in a mixed style anyway, I think it's better to
import the commit as is (as much as possible) rather than make this
micro-adjustment (which, in future, may make importing new Linux
commits difficult).
> + case1:
> + /* Case 1: node to erase has no more than 1 child (easy!) */
> +
> + parent = rb_parent(node);
> + color = rb_color(node);
> +
> + if (child)
> + rb_set_parent(child, parent);
> + __rb_change_child(node, child, parent, root);
> + } else if (!child) {
> + /* Still case 1, but this time the child is node->rb_left */
> + child = tmp;
> + goto case1;
> + } else {
> struct rb_node *old = node, *left;
>
> - node = node->rb_right;
> + node = child;
> while ((left = node->rb_left) != NULL)
> node = left;
>
Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |