Ref-count the filespecs used by diffcore
Rather than copy the filespecs when introducing new versions of them (for rename or copy detection), use a refcount and increment the count when reusing the diff_filespec. This avoids unnecessary allocations, but the real reason behind this is a future enhancement: we will want to track shared data across the copy/rename detection. In order to efficiently notice when a filespec is used by a rename, the rename machinery wants to keep track of a rename usage count which is shared across all different users of the filespec. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
cb1491b6bf
commit
9fb88419ba
@ -29,6 +29,7 @@ struct diff_filespec {
|
||||
void *cnt_data;
|
||||
const char *funcname_pattern_ident;
|
||||
unsigned long size;
|
||||
int count; /* Reference count */
|
||||
int xfrm_flags; /* for use by the xfrm */
|
||||
unsigned short mode; /* file mode */
|
||||
unsigned sha1_valid : 1; /* if true, use sha1 and trust mode;
|
||||
@ -43,6 +44,7 @@ struct diff_filespec {
|
||||
};
|
||||
|
||||
extern struct diff_filespec *alloc_filespec(const char *);
|
||||
extern void free_filespec(struct diff_filespec *);
|
||||
extern void fill_filespec(struct diff_filespec *, const unsigned char *,
|
||||
unsigned short);
|
||||
|
||||
|
Reference in New Issue
Block a user