![]() | |||||||||||
Messages in this thread |
Em Tue, Feb 10, 2004 at 10:57:43PM -0800, Alex Pankratov escreveu: > > > Andi Kleen wrote: > > >On Tue, 10 Feb 2004 22:28:11 -0800 > >Alex Pankratov <ap@swapped.cc> wrote: > > > > > >>Second patch removes if's from hlist_xxx() functions. The idea > >>is to terminate the list not with 0, but with a pointer at a > >>special 'null' item. Luckily a single 'null' can be shared > >>between all hlists _without_ any synchronization, because its > >>'next' and 'pprev' fields are never read. In fact, 'next' is > >>not accessed at all, and 'pprev' is used only for writing. > > > >I disagree with this change. The problem is that in a loop > >you need a register now to store the terminating element > >and compare to it instead of just testing for zero. This can generate > >much worse code on register starved i386 than having the conditional. > > Ugh, yeah, I thought about this. However my understand was that > since hlist_null is statically allocated variable, its address > will be a known constant at a link time (whether it's a static > link or dynamic/run-time link - btw, excuse my lack of proper > terminology here). So comparing something to &null would be > equivalent to comparing to the constant and not require an > extra register. That is why I was going to generate the code to see the instructions used with your patch when I was captured by my lovely wife... 8) - Arnaldo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||
| Last update: 2005-03-22 14:00 [from the cache] ©2003-2008 | |||||||||||