public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Generic Red-Black Trees (status update)
@ 2012-05-25 22:48 Daniel Santos
  2012-05-25 23:02 ` Andi Kleen
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Santos @ 2012-05-25 22:48 UTC (permalink / raw)
  To: linux-kernel

For anybody that's keeping up with this, I've gone through multiple
iterations and tests with 9 different gcc versions and concluded that
the search, insert & remove cores need to be coded in rbtree.h, using
the traditional interface (i.e., passing struct rb_node & rb_root
pointers instead of pointers to your specific object types).  The reason
is that gcc can't handle the cool fully-generic code until 4.6.  In gcc
4.5.x, optimization completely breaks expanding the inline functions
into huge bloated  monsters.  Also, while I'm re-coding it all, I'm
adding find_near & insert_near, for more efficient insertion & retrieval
when you already have a node that should be close to the one you want
(which is often the case when inserting many objects at once).

So after I'm done with this, I'll start on a new header file (grbtree.h
probably) using the "grb_" prefix for it's functions that implements the
gcc 4.6.x+ fully generic & type safe interface, but using cute
pre-processor tricks for pre-4.6.x compatibility (basically, something
to consider using once gcc 4.6+ is more widely used).

Daniel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-05-26  1:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-25 22:48 Generic Red-Black Trees (status update) Daniel Santos
2012-05-25 23:02 ` Andi Kleen
2012-05-26  1:12   ` Daniel Santos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox