Re: [PATCH v2] x86: page: get_order() optimization

From: Maksym Planeta
Date: Mon Mar 28 2011 - 15:31:56 EST


On Mon, 28/03/2011 at 07:08 +0200, Ingo Molnar wrote:
> Have you looked at the disassembly, why does the size increase? I'd expect such
> a straight assembly optimization to result in smaller code: in the non-constant
> case it should be the same size as before, in the constant case it should be
> smaller, because BSR should be smaller than an open-coded search loop, right?


Here is disassembly of patched get_order() with "inline" from
"kernel/kexec.c":

a6c: 48 8b 5d c8 mov -0x38(%rbp),%rbx
a70: e8 0b fd ff ff callq 780 <get_order.clone.7>

0000000000000780 <get_order.clone.7>:
780: 55 push %rbp
781: b8 01 00 00 00 mov $0x1,%eax
786: 48 89 e5 mov %rsp,%rbp
789: c9 leaveq
78a: c3 retq

My version of gcc is gcc (Debian 4.5.2-4) 4.5.2, probably I should
upgrade my gcc version for better inline expansions.

--
Thanks,

Maksym Planeta

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/