Thread (26 messages) 26 messages, 3 authors, 2012-07-28

Re: [PATCH 5/6] rbtree: faster augmented erase

From: Michel Lespinasse <hidden>
Date: 2012-07-28 02:31:44
Also in: lkml

On Fri, Jul 27, 2012 at 5:44 PM, Michel Lespinasse [off-list ref] wrote:
On Fri, Jul 27, 2012 at 1:02 PM, Peter Zijlstra [off-list ref] wrote:
quoted
As it stands rb_erase() isn't inlined and its rather big,
why would you want to inline it for augmented callers?
Just as the non-augmented rb_erase() is generated (as a non-inline
function) by merging together the rb_erase_augmented() inline function
and its dummy callbacks, I want each library that uses augmented
rbtrees to generate their own rb_erase() equivalent using their own
callbacks. The inline function in rbtree_internal.h is only to be used
as a template for generating one non-inline instance for each data
structure that uses augmented rbtrees.
One more thing while we're talking about compiled code size. As you
noted, the non-augmented rb_erase() is pretty big. However, that size
includes the inlined rebalancing code. For the augmented erase
functions, my proposal is to the rebalancing part (rb_erase_color with
the rotate callback) will not be inlined, so as to limit the size of
the erase functions for each augmented rbtree data structure.

-- 
Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help