From 63cdcfa40f5791dd233c574f633e56e4058e5f8e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 4 Feb 2013 15:21:18 -0800 Subject: pack-objects: shrink struct object_entry Turn some boolean fields into bitfields and use uint32_t for name hash. This shrinks the size of the structure from 128 bytes to 120 bytes. Signed-off-by: Junio C Hamano --- builtin/pack-objects.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index f069462cb0..7165cacccb 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -38,17 +38,18 @@ struct object_entry { void *delta_data; /* cached delta (uncompressed) */ unsigned long delta_size; /* delta data size (uncompressed) */ unsigned long z_delta_size; /* delta data size (compressed) */ - unsigned int hash; /* name hint hash */ enum object_type type; enum object_type in_pack_type; /* could be delta */ + uint32_t hash; /* name hint hash */ unsigned char in_pack_header_size; - unsigned char preferred_base; /* we do not pack this, but is available - * to be used as the base object to delta - * objects against. - */ - unsigned char no_try_delta; - unsigned char tagged; /* near the very tip of refs */ - unsigned char filled; /* assigned write-order */ + unsigned preferred_base:1; /* + * we do not pack this, but is available + * to be used as the base object to delta + * objects against. + */ + unsigned no_try_delta:1; + unsigned tagged:1; /* near the very tip of refs */ + unsigned filled:1; /* assigned write-order */ }; /* @@ -859,9 +860,9 @@ static void rehash_objects(void) } } -static unsigned name_hash(const char *name) +static uint32_t name_hash(const char *name) { - unsigned c, hash = 0; + uint32_t c, hash = 0; if (!name) return 0; @@ -908,7 +909,7 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type, struct packed_git *p, *found_pack = NULL; off_t found_offset = 0; int ix; - unsigned hash = name_hash(name); + uint32_t hash = name_hash(name); ix = nr_objects ? locate_object_entry_hash(sha1) : -1; if (ix >= 0) { -- cgit v1.2.1