提交 3f209277 编写于 作者: J Junio C Hamano

Merge branch 'es/osx-header-pollutes-mask-macro' into maint

* es/osx-header-pollutes-mask-macro:
  ewah: use less generic macro name
  ewah/bitmap: silence warning about MASK macro redefinition
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
#include "git-compat-util.h" #include "git-compat-util.h"
#include "ewok.h" #include "ewok.h"
#define MASK(x) ((eword_t)1 << (x % BITS_IN_WORD)) #define EWAH_MASK(x) ((eword_t)1 << (x % BITS_IN_EWORD))
#define BLOCK(x) (x / BITS_IN_WORD) #define EWAH_BLOCK(x) (x / BITS_IN_EWORD)
struct bitmap *bitmap_new(void) struct bitmap *bitmap_new(void)
{ {
...@@ -33,7 +33,7 @@ struct bitmap *bitmap_new(void) ...@@ -33,7 +33,7 @@ struct bitmap *bitmap_new(void)
void bitmap_set(struct bitmap *self, size_t pos) void bitmap_set(struct bitmap *self, size_t pos)
{ {
size_t block = BLOCK(pos); size_t block = EWAH_BLOCK(pos);
if (block >= self->word_alloc) { if (block >= self->word_alloc) {
size_t old_size = self->word_alloc; size_t old_size = self->word_alloc;
...@@ -45,22 +45,22 @@ void bitmap_set(struct bitmap *self, size_t pos) ...@@ -45,22 +45,22 @@ void bitmap_set(struct bitmap *self, size_t pos)
(self->word_alloc - old_size) * sizeof(eword_t)); (self->word_alloc - old_size) * sizeof(eword_t));
} }
self->words[block] |= MASK(pos); self->words[block] |= EWAH_MASK(pos);
} }
void bitmap_clear(struct bitmap *self, size_t pos) void bitmap_clear(struct bitmap *self, size_t pos)
{ {
size_t block = BLOCK(pos); size_t block = EWAH_BLOCK(pos);
if (block < self->word_alloc) if (block < self->word_alloc)
self->words[block] &= ~MASK(pos); self->words[block] &= ~EWAH_MASK(pos);
} }
int bitmap_get(struct bitmap *self, size_t pos) int bitmap_get(struct bitmap *self, size_t pos)
{ {
size_t block = BLOCK(pos); size_t block = EWAH_BLOCK(pos);
return block < self->word_alloc && return block < self->word_alloc &&
(self->words[block] & MASK(pos)) != 0; (self->words[block] & EWAH_MASK(pos)) != 0;
} }
struct ewah_bitmap *bitmap_to_ewah(struct bitmap *bitmap) struct ewah_bitmap *bitmap_to_ewah(struct bitmap *bitmap)
...@@ -127,7 +127,7 @@ void bitmap_and_not(struct bitmap *self, struct bitmap *other) ...@@ -127,7 +127,7 @@ void bitmap_and_not(struct bitmap *self, struct bitmap *other)
void bitmap_or_ewah(struct bitmap *self, struct ewah_bitmap *other) void bitmap_or_ewah(struct bitmap *self, struct ewah_bitmap *other)
{ {
size_t original_size = self->word_alloc; size_t original_size = self->word_alloc;
size_t other_final = (other->bit_size / BITS_IN_WORD) + 1; size_t other_final = (other->bit_size / BITS_IN_EWORD) + 1;
size_t i = 0; size_t i = 0;
struct ewah_iterator it; struct ewah_iterator it;
eword_t word; eword_t word;
...@@ -155,17 +155,17 @@ void bitmap_each_bit(struct bitmap *self, ewah_callback callback, void *data) ...@@ -155,17 +155,17 @@ void bitmap_each_bit(struct bitmap *self, ewah_callback callback, void *data)
uint32_t offset; uint32_t offset;
if (word == (eword_t)~0) { if (word == (eword_t)~0) {
for (offset = 0; offset < BITS_IN_WORD; ++offset) for (offset = 0; offset < BITS_IN_EWORD; ++offset)
callback(pos++, data); callback(pos++, data);
} else { } else {
for (offset = 0; offset < BITS_IN_WORD; ++offset) { for (offset = 0; offset < BITS_IN_EWORD; ++offset) {
if ((word >> offset) == 0) if ((word >> offset) == 0)
break; break;
offset += ewah_bit_ctz64(word >> offset); offset += ewah_bit_ctz64(word >> offset);
callback(pos + offset, data); callback(pos + offset, data);
} }
pos += BITS_IN_WORD; pos += BITS_IN_EWORD;
} }
} }
} }
......
...@@ -102,7 +102,7 @@ size_t ewah_add_empty_words(struct ewah_bitmap *self, int v, size_t number) ...@@ -102,7 +102,7 @@ size_t ewah_add_empty_words(struct ewah_bitmap *self, int v, size_t number)
if (number == 0) if (number == 0)
return 0; return 0;
self->bit_size += number * BITS_IN_WORD; self->bit_size += number * BITS_IN_EWORD;
return add_empty_words(self, v, number); return add_empty_words(self, v, number);
} }
...@@ -152,7 +152,7 @@ void ewah_add_dirty_words( ...@@ -152,7 +152,7 @@ void ewah_add_dirty_words(
self->buffer_size += can_add; self->buffer_size += can_add;
} }
self->bit_size += can_add * BITS_IN_WORD; self->bit_size += can_add * BITS_IN_EWORD;
if (number - can_add == 0) if (number - can_add == 0)
break; break;
...@@ -197,7 +197,7 @@ static size_t add_empty_word(struct ewah_bitmap *self, int v) ...@@ -197,7 +197,7 @@ static size_t add_empty_word(struct ewah_bitmap *self, int v)
size_t ewah_add(struct ewah_bitmap *self, eword_t word) size_t ewah_add(struct ewah_bitmap *self, eword_t word)
{ {
self->bit_size += BITS_IN_WORD; self->bit_size += BITS_IN_EWORD;
if (word == 0) if (word == 0)
return add_empty_word(self, 0); return add_empty_word(self, 0);
...@@ -211,8 +211,8 @@ size_t ewah_add(struct ewah_bitmap *self, eword_t word) ...@@ -211,8 +211,8 @@ size_t ewah_add(struct ewah_bitmap *self, eword_t word)
void ewah_set(struct ewah_bitmap *self, size_t i) void ewah_set(struct ewah_bitmap *self, size_t i)
{ {
const size_t dist = const size_t dist =
(i + BITS_IN_WORD) / BITS_IN_WORD - (i + BITS_IN_EWORD) / BITS_IN_EWORD -
(self->bit_size + BITS_IN_WORD - 1) / BITS_IN_WORD; (self->bit_size + BITS_IN_EWORD - 1) / BITS_IN_EWORD;
assert(i >= self->bit_size); assert(i >= self->bit_size);
...@@ -222,19 +222,19 @@ void ewah_set(struct ewah_bitmap *self, size_t i) ...@@ -222,19 +222,19 @@ void ewah_set(struct ewah_bitmap *self, size_t i)
if (dist > 1) if (dist > 1)
add_empty_words(self, 0, dist - 1); add_empty_words(self, 0, dist - 1);
add_literal(self, (eword_t)1 << (i % BITS_IN_WORD)); add_literal(self, (eword_t)1 << (i % BITS_IN_EWORD));
return; return;
} }
if (rlw_get_literal_words(self->rlw) == 0) { if (rlw_get_literal_words(self->rlw) == 0) {
rlw_set_running_len(self->rlw, rlw_set_running_len(self->rlw,
rlw_get_running_len(self->rlw) - 1); rlw_get_running_len(self->rlw) - 1);
add_literal(self, (eword_t)1 << (i % BITS_IN_WORD)); add_literal(self, (eword_t)1 << (i % BITS_IN_EWORD));
return; return;
} }
self->buffer[self->buffer_size - 1] |= self->buffer[self->buffer_size - 1] |=
((eword_t)1 << (i % BITS_IN_WORD)); ((eword_t)1 << (i % BITS_IN_EWORD));
/* check if we just completed a stream of 1s */ /* check if we just completed a stream of 1s */
if (self->buffer[self->buffer_size - 1] == (eword_t)(~0)) { if (self->buffer[self->buffer_size - 1] == (eword_t)(~0)) {
...@@ -255,11 +255,11 @@ void ewah_each_bit(struct ewah_bitmap *self, void (*callback)(size_t, void*), vo ...@@ -255,11 +255,11 @@ void ewah_each_bit(struct ewah_bitmap *self, void (*callback)(size_t, void*), vo
eword_t *word = &self->buffer[pointer]; eword_t *word = &self->buffer[pointer];
if (rlw_get_run_bit(word)) { if (rlw_get_run_bit(word)) {
size_t len = rlw_get_running_len(word) * BITS_IN_WORD; size_t len = rlw_get_running_len(word) * BITS_IN_EWORD;
for (k = 0; k < len; ++k, ++pos) for (k = 0; k < len; ++k, ++pos)
callback(pos, payload); callback(pos, payload);
} else { } else {
pos += rlw_get_running_len(word) * BITS_IN_WORD; pos += rlw_get_running_len(word) * BITS_IN_EWORD;
} }
++pointer; ++pointer;
...@@ -268,7 +268,7 @@ void ewah_each_bit(struct ewah_bitmap *self, void (*callback)(size_t, void*), vo ...@@ -268,7 +268,7 @@ void ewah_each_bit(struct ewah_bitmap *self, void (*callback)(size_t, void*), vo
int c; int c;
/* todo: zero count optimization */ /* todo: zero count optimization */
for (c = 0; c < BITS_IN_WORD; ++c, ++pos) { for (c = 0; c < BITS_IN_EWORD; ++c, ++pos) {
if ((self->buffer[pointer] & ((eword_t)1 << c)) != 0) if ((self->buffer[pointer] & ((eword_t)1 << c)) != 0)
callback(pos, payload); callback(pos, payload);
} }
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#endif #endif
typedef uint64_t eword_t; typedef uint64_t eword_t;
#define BITS_IN_WORD (sizeof(eword_t) * 8) #define BITS_IN_EWORD (sizeof(eword_t) * 8)
/** /**
* Do not use __builtin_popcountll. The GCC implementation * Do not use __builtin_popcountll. The GCC implementation
......
...@@ -622,7 +622,7 @@ static void show_objects_for_type( ...@@ -622,7 +622,7 @@ static void show_objects_for_type(
while (i < objects->word_alloc && ewah_iterator_next(&filter, &it)) { while (i < objects->word_alloc && ewah_iterator_next(&filter, &it)) {
eword_t word = objects->words[i] & filter; eword_t word = objects->words[i] & filter;
for (offset = 0; offset < BITS_IN_WORD; ++offset) { for (offset = 0; offset < BITS_IN_EWORD; ++offset) {
const unsigned char *sha1; const unsigned char *sha1;
struct revindex_entry *entry; struct revindex_entry *entry;
uint32_t hash = 0; uint32_t hash = 0;
...@@ -644,7 +644,7 @@ static void show_objects_for_type( ...@@ -644,7 +644,7 @@ static void show_objects_for_type(
show_reach(sha1, object_type, 0, hash, bitmap_git.pack, entry->offset); show_reach(sha1, object_type, 0, hash, bitmap_git.pack, entry->offset);
} }
pos += BITS_IN_WORD; pos += BITS_IN_EWORD;
i++; i++;
} }
} }
...@@ -776,7 +776,7 @@ int reuse_partial_packfile_from_bitmap(struct packed_git **packfile, ...@@ -776,7 +776,7 @@ int reuse_partial_packfile_from_bitmap(struct packed_git **packfile,
break; break;
} }
reuse_objects += BITS_IN_WORD; reuse_objects += BITS_IN_EWORD;
} }
#ifdef GIT_BITMAP_DEBUG #ifdef GIT_BITMAP_DEBUG
...@@ -1001,7 +1001,7 @@ static int rebuild_bitmap(uint32_t *reposition, ...@@ -1001,7 +1001,7 @@ static int rebuild_bitmap(uint32_t *reposition,
while (ewah_iterator_next(&word, &it)) { while (ewah_iterator_next(&word, &it)) {
uint32_t offset, bit_pos; uint32_t offset, bit_pos;
for (offset = 0; offset < BITS_IN_WORD; ++offset) { for (offset = 0; offset < BITS_IN_EWORD; ++offset) {
if ((word >> offset) == 0) if ((word >> offset) == 0)
break; break;
...@@ -1014,7 +1014,7 @@ static int rebuild_bitmap(uint32_t *reposition, ...@@ -1014,7 +1014,7 @@ static int rebuild_bitmap(uint32_t *reposition,
return -1; return -1;
} }
pos += BITS_IN_WORD; pos += BITS_IN_EWORD;
} }
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册