[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <27aff622f1574b329e18ba21922f6e7e@AcuMS.aculab.com>
Date: Fri, 8 Dec 2017 16:22:05 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Xin Long' <lucien.xin@...il.com>,
Marcelo Ricardo Leitner <marcelo.leitner@...il.com>
CC: Neil Horman <nhorman@...driver.com>,
network dev <netdev@...r.kernel.org>,
"linux-sctp@...r.kernel.org" <linux-sctp@...r.kernel.org>,
"davem@...emloft.net" <davem@...emloft.net>
Subject: RE: [PATCHv2 net-next 04/12] sctp: implement make_datafrag for
sctp_stream_interleave
From: Xin Long
> Sent: 08 December 2017 16:18
>
...
> >> Alternatively you could preform the dereference in two steps (i.e. declare an si
> >> pointer on the stack and set it equal to asoc->stream.si, then deref
> >> si->make_datafrag at call time. That will at least give the compiler an
> >> opportunity to preload the first pointer.
You want to save the function pointer itself.
...
> Another small difference:
> as you can see, comparing to (X), (Y) is using 0x28(%rsp) in the loop,
> instead of %r13.
>
> So that's what I can see from the related generated code.
> If 0x848(%r13) is not worse than 0x28(%rsp) for cpu, I think
> asoc->stream.si->make_datafrag() is even better. No ?
That code must have far too many life local variables.
Otherwise there's be a caller saved register available.
David
Powered by blists - more mailing lists