[U-Boot] [PATCH] initcall: Move to inline function
Alexander Graf
agraf at suse.de
Sat Feb 2 16:07:04 UTC 2019
> Am 02.02.2019 um 15:13 schrieb Simon Glass <sjg at chromium.org>:
>
> Hi Alex,
>
>> On Thu, 31 Jan 2019 at 08:06, Alexander Graf <agraf at suse.de> wrote:
>>
>> The board_r init function was complaining that we are looping through
>> an array, calling all our tiny init stubs sequentially via indirect
>> function calls (which can't be speculated, so they are slow).
>
> Is this a compiler warning? Could you let me know what this is?
It's the code comment I'm removing with this patch :).
>
>>
>> The solution to that is pretty easy though. All we need to do is inline
>> the function that loops through the functions and the compiler will
>> automatically convert almost all indirect calls into direct inlined code.
>
> You mean it calls the functions one after the other without a
> function-table array?
Exactly. Magical, eh? It even inlines them!
Alex
>
>>
>> With this patch, the overall code size drops (by 40 bytes on riscv64)
>> and boot time should become measurably faster for every target.
>>
>> Signed-off-by: Alexander Graf <agraf at suse.de>
>> ---
>> common/board_r.c | 5 +----
>> include/initcall.h | 35 ++++++++++++++++++++++++++++++++++-
>> lib/Makefile | 1 -
>> lib/initcall.c | 39 ---------------------------------------
>> 4 files changed, 35 insertions(+), 45 deletions(-)
>> delete mode 100644 lib/initcall.c
>>
>
> Regards,
> Simon
More information about the U-Boot
mailing list