diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2018-03-18 15:25:18 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-03-19 09:15:35 -0700 |
commit | 977b0471a9855d55719e46cf964cae67d573fdde (patch) | |
tree | 4068192269b52b7c4c2e6bd4ac0787ab3b3ab19a | |
parent | c5bd9b287e4e08156a4944672c78fc0beaebde01 (diff) | |
download | git-977b0471a9855d55719e46cf964cae67d573fdde.tar.gz |
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>
-rw-r--r-- | builtin/pack-objects.c | 3 | ||||
-rw-r--r-- | pack-objects.h | 28 |
2 files changed, 20 insertions, 11 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 647c01ea34..83f8154865 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -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)) + die("BUG: too many dfs states, increase OE_DFS_STATE_BITS"); + check_replace_refs = 0; reset_pack_idx_option(&pack_idx_opts); diff --git a/pack-objects.h b/pack-objects.h index b883d7aa10..8507e1b869 100644 --- a/pack-objects.h +++ b/pack-objects.h @@ -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 { |