From: Philippe E. <ph...@us...> - 2003-11-13 19:44:37
|
Update of /cvsroot/oprofile/oprofile/libdb In directory sc8-pr-cvs1:/tmp/cvs-serv29785/libdb Modified Files: Tag: BRANCH_CALLGRAPH db_manage.c odb_hash.h Log Message: better hash code Index: db_manage.c =================================================================== RCS file: /cvsroot/oprofile/oprofile/libdb/db_manage.c,v retrieving revision 1.7.2.4 retrieving revision 1.7.2.5 diff -u -p -d -r1.7.2.4 -r1.7.2.5 --- db_manage.c 8 Nov 2003 16:17:38 -0000 1.7.2.4 +++ db_manage.c 13 Nov 2003 19:44:27 -0000 1.7.2.5 @@ -31,7 +31,7 @@ static __inline odb_descr_t * odb_to_des static __inline odb_node_t * odb_to_node_base(samples_odb_t * hash) { - return (odb_node_t *)(((char *)hash->base_memory) + hash->offset_node); + return (odb_node_t *)(((char *)hash->base_memory) + hash->offset_node); } Index: odb_hash.h =================================================================== RCS file: /cvsroot/oprofile/oprofile/libdb/odb_hash.h,v retrieving revision 1.3.2.5 retrieving revision 1.3.2.6 diff -u -p -d -r1.3.2.5 -r1.3.2.6 --- odb_hash.h 13 Nov 2003 05:32:25 -0000 1.3.2.5 +++ odb_hash.h 13 Nov 2003 19:44:27 -0000 1.3.2.6 @@ -171,11 +171,12 @@ static __inline unsigned int odb_do_hash * and do a lot of tests ... */ /* trying to combine high order bits his a no-op: inside a binary image * high order bits don't vary a lot, hash table start with 7 bits mask - * so this hash coding use bits 3-9 of eip. Hash table is stored in + * so this hash coding use bits 0-7, 8-15. Hash table is stored in * files avoiding to rebuilding them at profiling re-start so * on changing do_hash() change the file format! */ - return (((value >> 32) ^ (value)) >> 3) & hash->hash_mask; + uint32_t temp = (value >> 32) ^ value; + return ((temp << 0) ^ (temp >> 8)) & hash->hash_mask; } #ifdef __cplusplus |