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 ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f