]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pack-objects: shrink struct object_entry
authorJunio C Hamano <gitster@pobox.com>
Mon, 4 Feb 2013 23:21:18 +0000 (15:21 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 4 Feb 2013 23:23:35 +0000 (15:23 -0800)
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>
builtin/pack-objects.c

index f069462cb03bbae46dae8d6b97420b3726690c47..7165cacccbe2ec6b243d795addf11f8988c93f5c 100644 (file)
@@ -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) {