Strip namelen out of ce_flags into a ce_namelen field
Strip the name length from the ce_flags field and move it into its own ce_namelen field in struct cache_entry. This will both give us a tiny bit of a performance enhancement when working with long pathnames and is a refactoring for more readability of the code. It enhances readability, by making it more clear what is a flag, and where the length is stored and make it clear which functions use stages in comparisions and which only use the length. It also makes CE_NAMEMASK private, so that users don't mistakenly write the name length in the flags. Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
01388518c3
commit
b60e188c51
@ -95,7 +95,8 @@ static int add_one_path(struct cache_entry *old, const char *path, int len, stru
|
||||
size = cache_entry_size(len);
|
||||
ce = xcalloc(1, size);
|
||||
memcpy(ce->name, path, len);
|
||||
ce->ce_flags = len;
|
||||
ce->ce_flags = create_ce_flags(0);
|
||||
ce->ce_namelen = len;
|
||||
fill_stat_cache_info(ce, st);
|
||||
ce->ce_mode = ce_mode_from_stat(old, st->st_mode);
|
||||
|
||||
@ -229,7 +230,8 @@ static int add_cacheinfo(unsigned int mode, const unsigned char *sha1,
|
||||
|
||||
hashcpy(ce->sha1, sha1);
|
||||
memcpy(ce->name, path, len);
|
||||
ce->ce_flags = create_ce_flags(len, stage);
|
||||
ce->ce_flags = create_ce_flags(stage);
|
||||
ce->ce_namelen = len;
|
||||
ce->ce_mode = create_ce_mode(mode);
|
||||
if (assume_unchanged)
|
||||
ce->ce_flags |= CE_VALID;
|
||||
@ -427,7 +429,8 @@ static struct cache_entry *read_one_ent(const char *which,
|
||||
|
||||
hashcpy(ce->sha1, sha1);
|
||||
memcpy(ce->name, path, namelen);
|
||||
ce->ce_flags = create_ce_flags(namelen, stage);
|
||||
ce->ce_flags = create_ce_flags(stage);
|
||||
ce->ce_namelen = namelen;
|
||||
ce->ce_mode = create_ce_mode(mode);
|
||||
return ce;
|
||||
}
|
||||
|
Reference in New Issue
Block a user