mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
*.c *_init(): define in terms of corresponding *_INIT macro
Change the common patter in the codebase of duplicating the initialization logic between an *_INIT macro and a corresponding *_init() function to use the macro as the canonical source of truth. Now we no longer need to keep the function up-to-date with the macro version. This implements a suggestion by Jeff King who found that under -O2 [1] modern compilers will init new version in place without the extra copy[1]. The performance of a single *_init() won't matter in most cases, but even if it does we're going to be producing efficient machine code to perform these operations. 1. https://lore.kernel.org/git/YNyrDxUO1PlGJvCn@coredump.intra.peff.net/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
3d97ea479f
commit
5726a6b401
5
strvec.c
5
strvec.c
@@ -6,9 +6,8 @@ const char *empty_strvec[] = { NULL };
|
||||
|
||||
void strvec_init(struct strvec *array)
|
||||
{
|
||||
array->v = empty_strvec;
|
||||
array->nr = 0;
|
||||
array->alloc = 0;
|
||||
struct strvec blank = STRVEC_INIT;
|
||||
memcpy(array, &blank, sizeof(*array));
|
||||
}
|
||||
|
||||
static void strvec_push_nodup(struct strvec *array, const char *value)
|
||||
|
||||
Reference in New Issue
Block a user