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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Jeff King
					Jeff King
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							c0566d78aa
						
					
				
				
					commit
					d40abc8e95
				
			| @ -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; | ||||
| 		} | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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; | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										2
									
								
								khash.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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) | ||||
|  | ||||
							
								
								
									
										2
									
								
								object.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  | ||||
| @ -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; | ||||
|  | ||||
| @ -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; | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user