mirror of
https://github.com/git/git
synced 2024-10-02 14:45:21 +00:00
pack-objects: use bitfield for object_entry::dfs_state
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
fd9b1baef8
commit
0c6804ab4e
|
@ -3049,6 +3049,9 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (DFS_NUM_STATES > (1 << OE_DFS_STATE_BITS))
|
||||||
|
BUG("too many dfs states, increase OE_DFS_STATE_BITS");
|
||||||
|
|
||||||
check_replace_refs = 0;
|
check_replace_refs = 0;
|
||||||
|
|
||||||
reset_pack_idx_option(&pack_idx_opts);
|
reset_pack_idx_option(&pack_idx_opts);
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
#ifndef PACK_OBJECTS_H
|
#ifndef PACK_OBJECTS_H
|
||||||
#define PACK_OBJECTS_H
|
#define PACK_OBJECTS_H
|
||||||
|
|
||||||
|
#define OE_DFS_STATE_BITS 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* State flags for depth-first search used for analyzing delta cycles.
|
||||||
|
*
|
||||||
|
* The depth is measured in delta-links to the base (so if A is a delta
|
||||||
|
* against B, then A has a depth of 1, and B a depth of 0).
|
||||||
|
*/
|
||||||
|
enum dfs_state {
|
||||||
|
DFS_NONE = 0,
|
||||||
|
DFS_ACTIVE,
|
||||||
|
DFS_DONE,
|
||||||
|
DFS_NUM_STATES
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* basic object info
|
* basic object info
|
||||||
* -----------------
|
* -----------------
|
||||||
|
@ -73,19 +88,10 @@ struct object_entry {
|
||||||
unsigned no_try_delta:1;
|
unsigned no_try_delta:1;
|
||||||
unsigned tagged:1; /* near the very tip of refs */
|
unsigned tagged:1; /* near the very tip of refs */
|
||||||
unsigned filled:1; /* assigned write-order */
|
unsigned filled:1; /* assigned write-order */
|
||||||
|
unsigned dfs_state:OE_DFS_STATE_BITS;
|
||||||
|
|
||||||
/*
|
|
||||||
* State flags for depth-first search used for analyzing delta cycles.
|
|
||||||
*
|
|
||||||
* The depth is measured in delta-links to the base (so if A is a delta
|
|
||||||
* against B, then A has a depth of 1, and B a depth of 0).
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
DFS_NONE = 0,
|
|
||||||
DFS_ACTIVE,
|
|
||||||
DFS_DONE
|
|
||||||
} dfs_state;
|
|
||||||
int depth;
|
int depth;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct packing_data {
|
struct packing_data {
|
||||||
|
|
Loading…
Reference in a new issue