From: Junio C Hamano Date: Wed, 15 Jul 2015 18:41:24 +0000 (-0700) Subject: Merge branch 'es/osx-header-pollutes-mask-macro' into maint X-Git-Tag: v2.4.6~3 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/3f20927717a8541fe607e4227f16ff6e1a5a6e22?ds=inline;hp=-c 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 --- 3f20927717a8541fe607e4227f16ff6e1a5a6e22 diff --combined ewah/ewok.h index 13c6e20412,7e311b3cd4..16b7a795a0 --- a/ewah/ewok.h +++ b/ewah/ewok.h @@@ -31,7 -31,7 +31,7 @@@ #endif 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 @@@ -47,8 -47,7 +47,8 @@@ static inline uint32_t ewah_bit_popcoun return (x * 0x0101010101010101ULL) >> 56; } -#ifdef __GNUC__ +/* __builtin_ctzll was not available until 3.4.0 */ +#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR > 3)) #define ewah_bit_ctz64(x) __builtin_ctzll(x) #else static inline int ewah_bit_ctz64(uint64_t x) @@@ -100,7 -99,8 +100,7 @@@ int ewah_serialize(struct ewah_bitmap * int ewah_serialize_native(struct ewah_bitmap *self, int fd); int ewah_deserialize(struct ewah_bitmap *self, int fd); -int ewah_read_mmap(struct ewah_bitmap *self, void *map, size_t len); -int ewah_read_mmap_native(struct ewah_bitmap *self, void *map, size_t len); +int ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len); uint32_t ewah_checksum(struct ewah_bitmap *self); diff --combined pack-bitmap.c index 2b3ff23797,18f0e428b6..637770af81 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@@ -60,7 -60,7 +60,7 @@@ static struct bitmap_index struct ewah_bitmap *blobs; struct ewah_bitmap *tags; - /* Map from SHA1 -> `stored_bitmap` for all the bitmapped comits */ + /* Map from SHA1 -> `stored_bitmap` for all the bitmapped commits */ khash_sha1 *bitmaps; /* Number of bitmapped commits */ @@@ -197,24 -197,15 +197,24 @@@ static struct stored_bitmap *store_bitm return stored; } -static int load_bitmap_entries_v1(struct bitmap_index *index) +static inline uint32_t read_be32(const unsigned char *buffer, size_t *pos) { - static const size_t MAX_XOR_OFFSET = 160; + uint32_t result = get_be32(buffer + *pos); + (*pos) += sizeof(result); + return result; +} - uint32_t i; - struct stored_bitmap **recent_bitmaps; - struct bitmap_disk_entry *entry; +static inline uint8_t read_u8(const unsigned char *buffer, size_t *pos) +{ + return buffer[(*pos)++]; +} - recent_bitmaps = xcalloc(MAX_XOR_OFFSET, sizeof(struct stored_bitmap)); +#define MAX_XOR_OFFSET 160 + +static int load_bitmap_entries_v1(struct bitmap_index *index) +{ + uint32_t i; + struct stored_bitmap *recent_bitmaps[MAX_XOR_OFFSET] = { NULL }; for (i = 0; i < index->entry_count; ++i) { int xor_offset, flags; @@@ -223,12 -214,15 +223,12 @@@ uint32_t commit_idx_pos; const unsigned char *sha1; - entry = (struct bitmap_disk_entry *)(index->map + index->map_pos); - index->map_pos += sizeof(struct bitmap_disk_entry); + commit_idx_pos = read_be32(index->map, &index->map_pos); + xor_offset = read_u8(index->map, &index->map_pos); + flags = read_u8(index->map, &index->map_pos); - commit_idx_pos = ntohl(entry->object_pos); sha1 = nth_packed_object_sha1(index->pack, commit_idx_pos); - xor_offset = (int)entry->xor_offset; - flags = (int)entry->flags; - bitmap = read_bitmap_1(index); if (!bitmap) return -1; @@@ -250,20 -244,6 +250,20 @@@ return 0; } +static char *pack_bitmap_filename(struct packed_git *p) +{ + char *idx_name; + int len; + + len = strlen(p->pack_name) - strlen(".pack"); + idx_name = xmalloc(len + strlen(".bitmap") + 1); + + memcpy(idx_name, p->pack_name, len); + memcpy(idx_name + len, ".bitmap", strlen(".bitmap") + 1); + + return idx_name; +} + static int open_pack_bitmap_1(struct packed_git *packfile) { int fd; @@@ -334,6 -314,20 +334,6 @@@ failed return -1; } -char *pack_bitmap_filename(struct packed_git *p) -{ - char *idx_name; - int len; - - len = strlen(p->pack_name) - strlen(".pack"); - idx_name = xmalloc(len + strlen(".bitmap") + 1); - - memcpy(idx_name, p->pack_name, len); - memcpy(idx_name + len, ".bitmap", strlen(".bitmap") + 1); - - return idx_name; -} - static int open_pack_bitmap(void) { struct packed_git *p; @@@ -406,8 -400,10 +406,8 @@@ static int ext_index_add_object(struct if (hash_ret > 0) { if (eindex->count >= eindex->alloc) { eindex->alloc = (eindex->alloc + 16) * 3 / 2; - eindex->objects = xrealloc(eindex->objects, - eindex->alloc * sizeof(struct object *)); - eindex->hashes = xrealloc(eindex->hashes, - eindex->alloc * sizeof(uint32_t)); + REALLOC_ARRAY(eindex->objects, eindex->alloc); + REALLOC_ARRAY(eindex->hashes, eindex->alloc); } bitmap_pos = eindex->count; @@@ -622,7 -618,7 +622,7 @@@ static void show_objects_for_type while (i < objects->word_alloc && ewah_iterator_next(&filter, &it)) { 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; struct revindex_entry *entry; uint32_t hash = 0; @@@ -644,7 -640,7 +644,7 @@@ show_reach(sha1, object_type, 0, hash, bitmap_git.pack, entry->offset); } - pos += BITS_IN_WORD; + pos += BITS_IN_EWORD; i++; } } @@@ -776,7 -772,7 +776,7 @@@ int reuse_partial_packfile_from_bitmap( break; } - reuse_objects += BITS_IN_WORD; + reuse_objects += BITS_IN_EWORD; } #ifdef GIT_BITMAP_DEBUG @@@ -984,8 -980,6 +984,8 @@@ void test_bitmap_walk(struct rev_info * fprintf(stderr, "OK!\n"); else fprintf(stderr, "Mismatch!\n"); + + bitmap_free(result); } static int rebuild_bitmap(uint32_t *reposition, @@@ -1001,7 -995,7 +1001,7 @@@ while (ewah_iterator_next(&word, &it)) { 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) break; @@@ -1014,7 -1008,7 +1014,7 @@@ return -1; } - pos += BITS_IN_WORD; + pos += BITS_IN_EWORD; } return 0; }