summaryrefslogtreecommitdiff
path: root/pack-objects.h
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2018-04-14 15:35:07 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-04-16 03:38:58 (GMT)
commit0cb3c1427a1e9cee638e0c1629933c907493d7e3 (patch)
treebedda660265c0c090780a7c6ba008ad3816b55af /pack-objects.h
parent898eba5e630696608ddca0ede489378e87464ad6 (diff)
downloadgit-0cb3c1427a1e9cee638e0c1629933c907493d7e3.zip
git-0cb3c1427a1e9cee638e0c1629933c907493d7e3.tar.gz
git-0cb3c1427a1e9cee638e0c1629933c907493d7e3.tar.bz2
pack-objects: shrink z_delta_size field in struct object_entry
We only cache deltas when it's smaller than a certain limit. This limit defaults to 1000 but save its compressed length in a 64-bit field. Shrink that field down to 20 bits, so you can only cache 1MB deltas. Larger deltas must be recomputed at when the pack is written down. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-objects.h')
-rw-r--r--pack-objects.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/pack-objects.h b/pack-objects.h
index e962dce..9d0391c 100644
--- a/pack-objects.h
+++ b/pack-objects.h
@@ -6,6 +6,7 @@
#define OE_DFS_STATE_BITS 2
#define OE_DEPTH_BITS 12
#define OE_IN_PACK_BITS 10
+#define OE_Z_DELTA_BITS 20
/*
* State flags for depth-first search used for analyzing delta cycles.
@@ -77,7 +78,7 @@ 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 z_delta_size:OE_Z_DELTA_BITS;
unsigned type_:TYPE_BITS;
unsigned in_pack_type:TYPE_BITS; /* could be delta */
unsigned type_valid:1;