diff options
| author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2018-04-14 17:35:02 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2018-04-16 12:38:58 +0900 |
| commit | 0c6804ab4ee5cfa47fe28e0a2d20415c5c1f8884 (patch) | |
| tree | b0bcae54c90d3ca986e57584b9d01ed5a5249fd1 | |
| parent | fd9b1baef8a940c9c251995b006a3d96f210e639 (diff) | |
| download | git-0c6804ab4ee5cfa47fe28e0a2d20415c5c1f8884.tar.xz | |
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 88877f1f59..cc3c31747e 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)) + 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 b4a83a6123..080ef62d31 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 { |
