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(),
|
||||
};
|
||||
|
||||
if (DFS_NUM_STATES > (1 << OE_DFS_STATE_BITS))
|
||||
BUG("too many dfs states, increase OE_DFS_STATE_BITS");
|
||||
|
||||
check_replace_refs = 0;
|
||||
|
||||
reset_pack_idx_option(&pack_idx_opts);
|
||||
|
@ -1,6 +1,21 @@
|
||||
#ifndef 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
|
||||
* -----------------
|
||||
@ -73,19 +88,10 @@ struct object_entry {
|
||||
unsigned no_try_delta:1;
|
||||
unsigned tagged:1; /* near the very tip of refs */
|
||||
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;
|
||||
|
||||
};
|
||||
|
||||
struct packing_data {
|
||||
|
Loading…
Reference in New Issue
Block a user