Coverage Report

Created: 2026-01-09 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/git/commit-slab-impl.h
Line
Count
Source
1
#ifndef COMMIT_SLAB_IMPL_H
2
#define COMMIT_SLAB_IMPL_H
3
4
#define implement_static_commit_slab(slabname, elemtype) \
5
  implement_commit_slab(slabname, elemtype, MAYBE_UNUSED static)
6
7
#define implement_shared_commit_slab(slabname, elemtype) \
8
  implement_commit_slab(slabname, elemtype, )
9
10
#define implement_commit_slab(slabname, elemtype, scope)    \
11
                  \
12
scope void init_ ##slabname## _with_stride(struct slabname *s,    \
13
0
               unsigned stride) \
14
0
{                 \
15
0
  unsigned int elem_size;           \
16
0
  if (!stride)             \
17
0
    stride = 1;           \
18
0
  s->stride = stride;           \
19
0
  elem_size = sizeof(elemtype) * stride;        \
20
0
  s->slab_size = COMMIT_SLAB_SIZE / elem_size;     \
21
0
  s->slab_count = 0;            \
22
0
  s->slab = NULL;             \
23
0
}                  \
Unexecuted instantiation: shallow.c:init_contains_cache_with_stride
Unexecuted instantiation: submodule.c:init_contains_cache_with_stride
Unexecuted instantiation: commit-reach.c:init_contains_cache_with_stride
Unexecuted instantiation: commit.c:init_contains_cache_with_stride
Unexecuted instantiation: commit.c:init_merge_desc_slab_with_stride
Unexecuted instantiation: diff-lib.c:init_contains_cache_with_stride
Unexecuted instantiation: log-tree.c:init_contains_cache_with_stride
Unexecuted instantiation: merge-ort.c:init_contains_cache_with_stride
Unexecuted instantiation: object-name.c:init_contains_cache_with_stride
Unexecuted instantiation: remote.c:init_contains_cache_with_stride
Unexecuted instantiation: revision.c:init_contains_cache_with_stride
Unexecuted instantiation: sequencer.c:init_contains_cache_with_stride
Unexecuted instantiation: bisect.c:init_contains_cache_with_stride
Unexecuted instantiation: commit-graph.c:init_commit_pos_with_stride
Unexecuted instantiation: commit-graph.c:init_commit_graph_data_slab_with_stride
Unexecuted instantiation: fetch-pack.c:init_contains_cache_with_stride
24
                  \
25
0
scope void init_ ##slabname(struct slabname *s)       \
26
0
{                 \
27
0
  init_ ##slabname## _with_stride(s, 1);       \
28
0
}                  \
Unexecuted instantiation: shallow.c:init_commit_depth
Unexecuted instantiation: shallow.c:init_ref_bitmap
Unexecuted instantiation: shallow.c:init_contains_cache
Unexecuted instantiation: submodule.c:init_contains_cache
Unexecuted instantiation: commit-reach.c:init_bit_arrays
Unexecuted instantiation: commit-reach.c:init_best_branch_base
Unexecuted instantiation: commit-reach.c:init_contains_cache
Unexecuted instantiation: commit.c:init_buffer_slab
Unexecuted instantiation: commit.c:init_indegree_slab
Unexecuted instantiation: commit.c:init_author_date_slab
Unexecuted instantiation: commit.c:init_contains_cache
Unexecuted instantiation: commit.c:init_merge_desc_slab
Unexecuted instantiation: diff-lib.c:init_contains_cache
Unexecuted instantiation: log-tree.c:init_contains_cache
Unexecuted instantiation: merge-ort.c:init_contains_cache
Unexecuted instantiation: object-name.c:init_contains_cache
Unexecuted instantiation: remote.c:init_contains_cache
Unexecuted instantiation: init_revision_sources
Unexecuted instantiation: revision.c:init_indegree_slab
Unexecuted instantiation: revision.c:init_author_date_slab
Unexecuted instantiation: revision.c:init_saved_parents
Unexecuted instantiation: revision.c:init_contains_cache
Unexecuted instantiation: sequencer.c:init_commit_todo_item
Unexecuted instantiation: sequencer.c:init_contains_cache
Unexecuted instantiation: bisect.c:init_commit_weight
Unexecuted instantiation: bisect.c:init_contains_cache
Unexecuted instantiation: bloom.c:init_bloom_filter_slab
Unexecuted instantiation: commit-graph.c:init_topo_level_slab
Unexecuted instantiation: commit-graph.c:init_commit_pos
Unexecuted instantiation: commit-graph.c:init_commit_graph_data_slab
Unexecuted instantiation: fetch-pack.c:init_contains_cache
Unexecuted instantiation: rebase-interactive.c:init_commit_seen
29
                  \
30
0
scope void clear_ ##slabname(struct slabname *s)      \
31
0
{                 \
32
0
  unsigned int i;             \
33
0
  for (i = 0; i < s->slab_count; i++)       \
34
0
    free(s->slab[i]);         \
35
0
  s->slab_count = 0;            \
36
0
  FREE_AND_NULL(s->slab);            \
37
0
}                  \
Unexecuted instantiation: shallow.c:clear_contains_cache
Unexecuted instantiation: submodule.c:clear_contains_cache
Unexecuted instantiation: commit-reach.c:clear_contains_cache
Unexecuted instantiation: commit.c:clear_contains_cache
Unexecuted instantiation: commit.c:clear_merge_desc_slab
Unexecuted instantiation: diff-lib.c:clear_contains_cache
Unexecuted instantiation: log-tree.c:clear_contains_cache
Unexecuted instantiation: merge-ort.c:clear_contains_cache
Unexecuted instantiation: object-name.c:clear_contains_cache
Unexecuted instantiation: remote.c:clear_contains_cache
Unexecuted instantiation: revision.c:clear_contains_cache
Unexecuted instantiation: sequencer.c:clear_contains_cache
Unexecuted instantiation: bisect.c:clear_contains_cache
Unexecuted instantiation: commit-graph.c:clear_commit_pos
Unexecuted instantiation: fetch-pack.c:clear_contains_cache
38
                  \
39
0
scope void deep_clear_ ##slabname(struct slabname *s, void (*free_fn)(elemtype *)) \
40
0
{                 \
41
0
  unsigned int i;             \
42
0
  for (i = 0; i < s->slab_count; i++) {       \
43
0
    unsigned int j;           \
44
0
    if (!s->slab[i])         \
45
0
      continue;         \
46
0
    for (j = 0; j < s->slab_size; j++)     \
47
0
      free_fn(&s->slab[i][j * s->stride]);   \
48
0
  }               \
49
0
  clear_ ##slabname(s);            \
50
0
}                  \
Unexecuted instantiation: shallow.c:deep_clear_commit_depth
Unexecuted instantiation: shallow.c:deep_clear_contains_cache
Unexecuted instantiation: shallow.c:deep_clear_ref_bitmap
Unexecuted instantiation: submodule.c:deep_clear_contains_cache
Unexecuted instantiation: commit-reach.c:deep_clear_contains_cache
Unexecuted instantiation: commit-reach.c:deep_clear_bit_arrays
Unexecuted instantiation: commit-reach.c:deep_clear_best_branch_base
Unexecuted instantiation: commit.c:deep_clear_contains_cache
Unexecuted instantiation: commit.c:deep_clear_buffer_slab
Unexecuted instantiation: commit.c:deep_clear_indegree_slab
Unexecuted instantiation: commit.c:deep_clear_author_date_slab
Unexecuted instantiation: commit.c:deep_clear_merge_desc_slab
Unexecuted instantiation: diff-lib.c:deep_clear_contains_cache
Unexecuted instantiation: log-tree.c:deep_clear_contains_cache
Unexecuted instantiation: merge-ort.c:deep_clear_contains_cache
Unexecuted instantiation: object-name.c:deep_clear_contains_cache
Unexecuted instantiation: remote.c:deep_clear_contains_cache
Unexecuted instantiation: deep_clear_revision_sources
Unexecuted instantiation: revision.c:deep_clear_saved_parents
Unexecuted instantiation: revision.c:deep_clear_contains_cache
Unexecuted instantiation: revision.c:deep_clear_indegree_slab
Unexecuted instantiation: revision.c:deep_clear_author_date_slab
Unexecuted instantiation: sequencer.c:deep_clear_contains_cache
Unexecuted instantiation: sequencer.c:deep_clear_commit_todo_item
Unexecuted instantiation: bisect.c:deep_clear_contains_cache
Unexecuted instantiation: bisect.c:deep_clear_commit_weight
Unexecuted instantiation: bloom.c:deep_clear_bloom_filter_slab
Unexecuted instantiation: commit-graph.c:deep_clear_topo_level_slab
Unexecuted instantiation: commit-graph.c:deep_clear_commit_pos
Unexecuted instantiation: commit-graph.c:deep_clear_commit_graph_data_slab
Unexecuted instantiation: fetch-pack.c:deep_clear_contains_cache
Unexecuted instantiation: rebase-interactive.c:deep_clear_commit_seen
51
                  \
52
scope elemtype *slabname## _at_peek(struct slabname *s,     \
53
              const struct commit *c, \
54
0
              int add_if_missing)   \
55
0
{                 \
56
0
  unsigned int nth_slab, nth_slot;        \
57
0
                  \
58
0
  nth_slab = c->index / s->slab_size;       \
59
0
  nth_slot = c->index % s->slab_size;       \
60
0
                  \
61
0
  if (s->slab_count <= nth_slab) {       \
62
0
    unsigned int i;           \
63
0
    if (!add_if_missing)         \
64
0
      return NULL;         \
65
0
    REALLOC_ARRAY(s->slab, nth_slab + 1);      \
66
0
    for (i = s->slab_count; i <= nth_slab; i++)   \
67
0
      s->slab[i] = NULL;       \
68
0
    s->slab_count = nth_slab + 1;       \
69
0
  }               \
70
0
  if (!s->slab[nth_slab]) {         \
71
0
    if (!add_if_missing)         \
72
0
      return NULL;         \
73
0
    s->slab[nth_slab] = xcalloc(s->slab_size,   \
74
0
              sizeof(**s->slab) * s->stride);   \
75
0
  }                \
76
0
  return &s->slab[nth_slab][nth_slot * s->stride];   \
77
0
}                  \
Unexecuted instantiation: shallow.c:contains_cache_at_peek
Unexecuted instantiation: submodule.c:contains_cache_at_peek
Unexecuted instantiation: commit.c:contains_cache_at_peek
Unexecuted instantiation: diff-lib.c:contains_cache_at_peek
Unexecuted instantiation: log-tree.c:contains_cache_at_peek
Unexecuted instantiation: merge-ort.c:contains_cache_at_peek
Unexecuted instantiation: object-name.c:contains_cache_at_peek
Unexecuted instantiation: remote.c:contains_cache_at_peek
Unexecuted instantiation: revision.c:contains_cache_at_peek
Unexecuted instantiation: revision.c:author_date_slab_at_peek
Unexecuted instantiation: sequencer.c:contains_cache_at_peek
Unexecuted instantiation: bisect.c:contains_cache_at_peek
Unexecuted instantiation: fetch-pack.c:contains_cache_at_peek
78
                  \
79
scope elemtype *slabname## _at(struct slabname *s,      \
80
0
               const struct commit *c)  \
81
0
{                 \
82
0
  return slabname##_at_peek(s, c, 1);        \
83
0
}                  \
Unexecuted instantiation: shallow.c:commit_depth_at
Unexecuted instantiation: shallow.c:ref_bitmap_at
Unexecuted instantiation: shallow.c:contains_cache_at
Unexecuted instantiation: submodule.c:contains_cache_at
Unexecuted instantiation: commit-reach.c:contains_cache_at
Unexecuted instantiation: commit-reach.c:bit_arrays_at
Unexecuted instantiation: commit-reach.c:best_branch_base_at
Unexecuted instantiation: commit.c:buffer_slab_at
Unexecuted instantiation: commit.c:author_date_slab_at
Unexecuted instantiation: commit.c:indegree_slab_at
Unexecuted instantiation: commit.c:merge_desc_slab_at
Unexecuted instantiation: commit.c:contains_cache_at
Unexecuted instantiation: diff-lib.c:contains_cache_at
Unexecuted instantiation: log-tree.c:contains_cache_at
Unexecuted instantiation: merge-ort.c:contains_cache_at
Unexecuted instantiation: object-name.c:contains_cache_at
Unexecuted instantiation: remote.c:contains_cache_at
Unexecuted instantiation: revision_sources_at
Unexecuted instantiation: revision.c:indegree_slab_at
Unexecuted instantiation: revision.c:saved_parents_at
Unexecuted instantiation: revision.c:contains_cache_at
Unexecuted instantiation: revision.c:author_date_slab_at
Unexecuted instantiation: sequencer.c:commit_todo_item_at
Unexecuted instantiation: sequencer.c:contains_cache_at
Unexecuted instantiation: bisect.c:commit_weight_at
Unexecuted instantiation: bisect.c:contains_cache_at
Unexecuted instantiation: bloom.c:bloom_filter_slab_at
Unexecuted instantiation: commit-graph.c:commit_graph_data_slab_at
Unexecuted instantiation: commit-graph.c:topo_level_slab_at
Unexecuted instantiation: commit-graph.c:commit_pos_at
Unexecuted instantiation: fetch-pack.c:contains_cache_at
Unexecuted instantiation: rebase-interactive.c:commit_seen_at
84
                  \
85
scope elemtype *slabname## _peek(struct slabname *s,      \
86
0
               const struct commit *c)  \
87
0
{                 \
88
0
  return slabname##_at_peek(s, c, 0);        \
89
0
}                  \
Unexecuted instantiation: shallow.c:contains_cache_peek
Unexecuted instantiation: shallow.c:commit_depth_peek
Unexecuted instantiation: shallow.c:ref_bitmap_peek
Unexecuted instantiation: submodule.c:contains_cache_peek
Unexecuted instantiation: commit-reach.c:contains_cache_peek
Unexecuted instantiation: commit-reach.c:bit_arrays_peek
Unexecuted instantiation: commit-reach.c:best_branch_base_peek
Unexecuted instantiation: commit.c:buffer_slab_peek
Unexecuted instantiation: commit.c:contains_cache_peek
Unexecuted instantiation: commit.c:indegree_slab_peek
Unexecuted instantiation: commit.c:author_date_slab_peek
Unexecuted instantiation: commit.c:merge_desc_slab_peek
Unexecuted instantiation: diff-lib.c:contains_cache_peek
Unexecuted instantiation: log-tree.c:contains_cache_peek
Unexecuted instantiation: merge-ort.c:contains_cache_peek
Unexecuted instantiation: object-name.c:contains_cache_peek
Unexecuted instantiation: remote.c:contains_cache_peek
Unexecuted instantiation: revision_sources_peek
Unexecuted instantiation: revision.c:contains_cache_peek
Unexecuted instantiation: revision.c:indegree_slab_peek
Unexecuted instantiation: revision.c:author_date_slab_peek
Unexecuted instantiation: revision.c:saved_parents_peek
Unexecuted instantiation: sequencer.c:contains_cache_peek
Unexecuted instantiation: sequencer.c:commit_todo_item_peek
Unexecuted instantiation: bisect.c:contains_cache_peek
Unexecuted instantiation: bisect.c:commit_weight_peek
Unexecuted instantiation: bloom.c:bloom_filter_slab_peek
Unexecuted instantiation: commit-graph.c:commit_graph_data_slab_peek
Unexecuted instantiation: commit-graph.c:topo_level_slab_peek
Unexecuted instantiation: commit-graph.c:commit_pos_peek
Unexecuted instantiation: fetch-pack.c:contains_cache_peek
Unexecuted instantiation: rebase-interactive.c:commit_seen_peek
90
                  \
91
struct slabname
92
93
/*
94
 * Note that this redundant forward declaration is required
95
 * to allow a terminating semicolon, which makes instantiations look
96
 * like function declarations.  I.e., the expansion of
97
 *
98
 *    implement_commit_slab(indegree, int, static);
99
 *
100
 * ends in 'struct indegree;'.  This would otherwise
101
 * be a syntax error according (at least) to ISO C.  It's hard to
102
 * catch because GCC silently parses it by default.
103
 */
104
105
#endif  /* COMMIT_SLAB_IMPL_H */