diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-02-04 15:21:18 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-02-04 15:23:35 -0800 |
commit | 63cdcfa40f5791dd233c574f633e56e4058e5f8e (patch) | |
tree | c05c6bf1a400c8353638ecf7871e7a409241d8f6 /builtin | |
parent | f51a757fafc1e1ca9565381a13109932acd81dba (diff) | |
download | git-63cdcfa40f5791dd233c574f633e56e4058e5f8e.tar.gz |
pack-objects: shrink struct object_entryjc/pack-objects
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 <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/pack-objects.c | 23 |
1 files 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) { |