• Duy Nguyen's avatar
    pack-objects: refer to delta objects by index instead of pointer · 898eba5e
    Duy Nguyen authored
    These delta pointers always point to elements in the objects[] array
    in packing_data struct. We can only hold maximum 4G of those objects
    because the array size in nr_objects is uint32_t. We could use
    uint32_t indexes to address these elements instead of pointers. On
    64-bit architecture (8 bytes per pointer) this would save 4 bytes per
    pointer.
    
    Convert these delta pointers to indexes. Since we need to handle NULL
    pointers as well, the index is shifted by one [1].
    
    [1] This means we can only index 2^32-2 objects even though nr_objects
        could contain 2^32-1 objects. It should not be a problem in
        practice because when we grow objects[], nr_alloc would probably
        blow up long before nr_objects hits the wall.
    Signed-off-by: Duy Nguyen's avatarNguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: 's avatarJunio C Hamano <gitster@pobox.com>
    898eba5e
pack-objects.h 7.11 KB