ewah: implement ewah_bitmap_popcount()

Some of the pseudo-merge test helpers (which will be introduced in the
following commit) will want to indicate the total number of commits in
or objects reachable from a pseudo-merge.

Implement a popcount() function that operates on EWAH bitmaps to quickly
determine how many bits are set in each of the respective bitmaps.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Taylor Blau
2024-05-23 17:27:02 -04:00
committed by Junio C Hamano
parent 955747b4da
commit 0481cbf912
2 changed files with 15 additions and 0 deletions

View File

@ -212,6 +212,20 @@ size_t bitmap_popcount(struct bitmap *self)
return count;
}
size_t ewah_bitmap_popcount(struct ewah_bitmap *self)
{
struct ewah_iterator it;
eword_t word;
size_t count = 0;
ewah_iterator_init(&it, self);
while (ewah_iterator_next(&word, &it))
count += ewah_bit_popcount64(word);
return count;
}
int bitmap_is_empty(struct bitmap *self)
{
size_t i;