Re: [PATCH] [2.6] [1/2] hlist: replace explicit checks of hlist fields w/ func calls

Arnaldo Carvalho de Melo
2004-02-11T11:54:09Z

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