On Thu, 27 Jun 2019, Michel Lespinasse wrote:

As was already noted in rbtree.h, the logic to cache rb_first (or rb_last)
can easily be implemented externally to the core rbtree api.

Change the implementation to do just that. Previously the update of
rb_leftmost was wired deeper into the implemntation, but there were
some disadvantages to that - mostly, lib/rbtree.c had separate
instantiations for rb_insert_color() vs rb_insert_color_cached(), as well
as rb_erase() vs rb_erase_cached(), which were doing exactly the same
thing save for the rb_leftmost update at the start of either function.

Also:

  text     data     bss     dec     hex filename
  5405      120       0    5525    1595 lib/rbtree.o-vanilla
  3827       96       0    3923     f53 lib/rbtree.o-patch

Reply via email to