From d40abc8e95f75b529feb140178b69a3783c2d108 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 20 Jun 2019 03:41:49 -0400 Subject: hashmap: convert sha1hash() to oidhash() There are no callers left of sha1hash() that do not simply pass the "hash" member of a "struct object_id". Let's get rid of the outdated sha1-specific function and provide one that operates on the whole struct (even though the technique, taking the first few bytes of the hash, will remain the same). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano diff --git a/builtin/describe.c b/builtin/describe.c index 0a5cde0..2001542 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -76,7 +76,7 @@ static int commit_name_neq(const void *unused_cmp_data, static inline struct commit_name *find_commit_name(const struct object_id *peeled) { - return hashmap_get_from_hash(&names, sha1hash(peeled->hash), peeled); + return hashmap_get_from_hash(&names, oidhash(peeled), peeled); } static int replace_name(struct commit_name *e, @@ -123,7 +123,7 @@ static void add_to_known_names(const char *path, if (!e) { e = xmalloc(sizeof(struct commit_name)); oidcpy(&e->peeled, peeled); - hashmap_entry_init(e, sha1hash(peeled->hash)); + hashmap_entry_init(e, oidhash(peeled)); hashmap_add(&names, e); e->path = NULL; } diff --git a/decorate.c b/decorate.c index de31331..a605b1b 100644 --- a/decorate.c +++ b/decorate.c @@ -8,7 +8,7 @@ static unsigned int hash_obj(const struct object *obj, unsigned int n) { - return sha1hash(obj->oid.hash) % n; + return oidhash(&obj->oid) % n; } static void *insert_decoration(struct decoration *n, const struct object *base, void *decoration) diff --git a/diffcore-rename.c b/diffcore-rename.c index 07bd34b..1e50d49 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -266,7 +266,7 @@ static unsigned int hash_filespec(struct repository *r, hash_object_file(filespec->data, filespec->size, "blob", &filespec->oid); } - return sha1hash(filespec->oid.hash); + return oidhash(&filespec->oid); } static int find_identical_files(struct hashmap *srcs, diff --git a/hashmap.h b/hashmap.h index f95593b..8424911 100644 --- a/hashmap.h +++ b/hashmap.h @@ -1,6 +1,8 @@ #ifndef HASHMAP_H #define HASHMAP_H +#include "hash.h" + /* * Generic implementation of hash-based key-value mappings. * @@ -118,14 +120,14 @@ unsigned int memihash_cont(unsigned int hash_seed, const void *buf, size_t len); * the results will be different on big-endian and little-endian * platforms, so they should not be stored or transferred over the net. */ -static inline unsigned int sha1hash(const unsigned char *sha1) +static inline unsigned int oidhash(const struct object_id *oid) { /* - * Equivalent to 'return *(unsigned int *)sha1;', but safe on + * Equivalent to 'return *(unsigned int *)oid->hash;', but safe on * platforms that don't support unaligned reads. */ unsigned int hash; - memcpy(&hash, sha1, sizeof(hash)); + memcpy(&hash, oid->hash, sizeof(hash)); return hash; } diff --git a/khash.h b/khash.h index f911d2b..21c2095 100644 --- a/khash.h +++ b/khash.h @@ -326,7 +326,7 @@ static const double __ac_HASH_UPPER = 0.77; static inline unsigned int oidhash_by_value(struct object_id oid) { - return sha1hash(oid.hash); + return oidhash(&oid); } static inline int oideq_by_value(struct object_id a, struct object_id b) diff --git a/object.c b/object.c index 317647d..94db022 100644 --- a/object.c +++ b/object.c @@ -61,7 +61,7 @@ int type_from_string_gently(const char *str, ssize_t len, int gentle) */ static unsigned int hash_obj(const struct object_id *oid, unsigned int n) { - return sha1hash(oid->hash) & (n - 1); + return oidhash(oid) & (n - 1); } /* diff --git a/pack-objects.c b/pack-objects.c index 00a5f6e..5256029 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -11,7 +11,7 @@ static uint32_t locate_object_entry_hash(struct packing_data *pdata, { uint32_t i, mask = (pdata->index_size - 1); - i = sha1hash(oid->hash) & mask; + i = oidhash(oid) & mask; while (pdata->index[i] > 0) { uint32_t pos = pdata->index[i] - 1; diff --git a/patch-ids.c b/patch-ids.c index f70d396..e8c150d 100644 --- a/patch-ids.c +++ b/patch-ids.c @@ -83,7 +83,7 @@ static int init_patch_id_entry(struct patch_id *patch, if (commit_patch_id(commit, &ids->diffopts, &header_only_patch_id, 1, 0)) return -1; - hashmap_entry_init(patch, sha1hash(header_only_patch_id.hash)); + hashmap_entry_init(patch, oidhash(&header_only_patch_id)); return 0; } -- cgit v0.10.2-6-g49f6