]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff: remove unused data from xdlclass_t
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Mon, 26 Jan 2026 10:48:52 +0000 (10:48 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Jan 2026 16:38:29 +0000 (08:38 -0800)
Prior to commit 6d507bd41a (xdiff: delete fields ha, line, size
in xdlclass_t in favor of an xrecord_t, 2025-09-26) xdlclass_t
carried a copy of all the fields in xrecord_t. That commit embedded
xrecord_t in xdlclass_t to make it easier to change the types of
the fields in xrecord_t. However commit 6a26019c81 (xdiff: split
xrecord_t.ha into line_hash and minimal_perfect_hash, 2025-11-18)
added the "minimal_perfect_hash" field to xrecord_t which is not
used by xdlclass_t. To avoid wasting space stop copying the whole
of xrecord_t and just copy the pointer and length that we need to
intern the line. Together with the previous commit this effectively
reverts 6d507bd41a.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xprepare.c

index 08e5d3f4dfafdc8ac923279dbe903c7bc1d5b476..cd4fc405eb18fe8f2a5e91e16be04409c743108f 100644 (file)
@@ -36,7 +36,8 @@
 typedef struct s_xdlclass {
        uint64_t line_hash;
        struct s_xdlclass *next;
-       xrecord_t rec;
+       const uint8_t *ptr;
+       size_t size;
        long idx;
        long len1, len2;
 } xdlclass_t;
@@ -101,7 +102,7 @@ static int xdl_classify_record(unsigned int pass, xdlclassifier_t *cf, xrecord_t
        hi = XDL_HASHLONG(line_hash, cf->hbits);
        for (rcrec = cf->rchash[hi]; rcrec; rcrec = rcrec->next)
                if (rcrec->line_hash == line_hash &&
-                               xdl_recmatch((const char *)rcrec->rec.ptr, (long)rcrec->rec.size,
+                               xdl_recmatch((const char *)rcrec->ptr, (long)rcrec->size,
                                        (const char *)rec->ptr, (long)rec->size, cf->flags))
                        break;
 
@@ -115,7 +116,8 @@ static int xdl_classify_record(unsigned int pass, xdlclassifier_t *cf, xrecord_t
                                return -1;
                cf->rcrecs[rcrec->idx] = rcrec;
                rcrec->line_hash = line_hash;
-               rcrec->rec = *rec;
+               rcrec->ptr = rec->ptr;
+               rcrec->size = rec->size;
                rcrec->len1 = rcrec->len2 = 0;
                rcrec->next = cf->rchash[hi];
                cf->rchash[hi] = rcrec;