rbtree: low level optimizations in __rb_erase_color()
authorMichel Lespinasse <[email protected]>
Mon, 8 Oct 2012 23:30:57 +0000 (16:30 -0700)
committerLinus Torvalds <[email protected]>
Tue, 9 Oct 2012 07:22:35 +0000 (16:22 +0900)
commit6280d2356fd8ad0936a63c10dc1e6accf48d0c61
tree867b959cc5441f5af443965acc60d2e78dc7fec0
parente125d1471a4f8f1bf7ea9a83deb8d23cb40bd712
rbtree: low level optimizations in __rb_erase_color()

In __rb_erase_color(), we often already have pointers to the nodes being
rotated and/or know what their colors must be, so we can generate more
efficient code than the generic __rb_rotate_left() and __rb_rotate_right()
functions.

Also when the current node is red or when flipping the sibling's color,
the parent is already known so we can use the more efficient
rb_set_parent_color() function to set the desired color.

Signed-off-by: Michel Lespinasse <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Acked-by: David Woodhouse <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Daniel Santos <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
lib/rbtree.c