@@ -170,12 +170,12 @@ impl Hasher for FxHasher {
170170 // As most hash table implementations (including hashbrown) compute
171171 // the bucket index from the bottom bits we want to move bits from the
172172 // top to the bottom. Ideally we'd rotate left by exactly the hash table
173- // size, but as we don't know this we'll choose 20 bits, giving decent
174- // entropy up until 2^20 table sizes. On 32-bit hosts we'll dial it
173+ // size, but as we don't know this we'll choose 26 bits, giving decent
174+ // entropy up until 2^26 table sizes. On 32-bit hosts we'll dial it
175175 // back down a bit to 15 bits.
176176
177177 #[ cfg( target_pointer_width = "64" ) ]
178- const ROTATE : u32 = 20 ;
178+ const ROTATE : u32 = 26 ;
179179 #[ cfg( target_pointer_width = "32" ) ]
180180 const ROTATE : u32 = 15 ;
181181
@@ -339,75 +339,75 @@ mod tests {
339339 fn unsigned ( ) {
340340 test_hash ! {
341341 hash( 0_u8 ) == 0 ,
342- hash( 1_u8 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
343- hash( 100_u8 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
344- hash( u8 :: MAX ) == if B32 { 999399879 } else { 17600987023830959190 } ,
342+ hash( 1_u8 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
343+ hash( 100_u8 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
344+ hash( u8 :: MAX ) == if B32 { 999399879 } else { 1211781028898739645 } ,
345345
346346 hash( 0_u16 ) == 0 ,
347- hash( 1_u16 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
348- hash( 100_u16 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
349- hash( u16 :: MAX ) == if B32 { 3440503042 } else { 4001367065645062987 } ,
347+ hash( 1_u16 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
348+ hash( 100_u16 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
349+ hash( u16 :: MAX ) == if B32 { 3440503042 } else { 16279819243059860173 } ,
350350
351351 hash( 0_u32 ) == 0 ,
352- hash( 1_u32 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
353- hash( 100_u32 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
354- hash( u32 :: MAX ) == if B32 { 1293006356 } else { 17126373362251322066 } ,
352+ hash( 1_u32 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
353+ hash( 100_u32 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
354+ hash( u32 :: MAX ) == if B32 { 1293006356 } else { 7729994835221066939 } ,
355355
356356 hash( 0_u64 ) == 0 ,
357- hash( 1_u64 ) == if B32 { 275023839 } else { 12583873379513078615 } ,
358- hash( 100_u64 ) == if B32 { 1732383522 } else { 4008740938959785536 } ,
359- hash( u64 :: MAX ) == if B32 { 1017982517 } else { 5862870694197521576 } ,
357+ hash( 1_u64 ) == if B32 { 275023839 } else { 12157901119326311915 } ,
358+ hash( 100_u64 ) == if B32 { 1732383522 } else { 16751747135202103309 } ,
359+ hash( u64 :: MAX ) == if B32 { 1017982517 } else { 6288842954450348564 } ,
360360
361361 hash( 0_u128 ) == 0 ,
362- hash( 1_u128 ) == if B32 { 1860738631 } else { 12885773367358079611 } ,
363- hash( 100_u128 ) == if B32 { 1389515751 } else { 15751995649841559633 } ,
364- hash( u128 :: MAX ) == if B32 { 2156022013 } else { 11423841400550042156 } ,
362+ hash( 1_u128 ) == if B32 { 1860738631 } else { 13032756267696824044 } ,
363+ hash( 100_u128 ) == if B32 { 1389515751 } else { 12003541609544029302 } ,
364+ hash( u128 :: MAX ) == if B32 { 2156022013 } else { 11702830760530184999 } ,
365365
366366 hash( 0_usize ) == 0 ,
367- hash( 1_usize ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
368- hash( 100_usize ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
369- hash( usize :: MAX ) == if B32 { 1293006356 } else { 5862870694197521576 } ,
367+ hash( 1_usize ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
368+ hash( 100_usize ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
369+ hash( usize :: MAX ) == if B32 { 1293006356 } else { 6288842954450348564 } ,
370370 }
371371 }
372372
373373 #[ test]
374374 fn signed ( ) {
375375 test_hash ! {
376- hash( i8 :: MIN ) == if B32 { 2000713177 } else { 5869058164817243095 } ,
376+ hash( i8 :: MIN ) == if B32 { 2000713177 } else { 6684841074112525780 } ,
377377 hash( 0_i8 ) == 0 ,
378- hash( 1_i8 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
379- hash( 100_i8 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
380- hash( i8 :: MAX ) == if B32 { 3293686765 } else { 11731928859014764671 } ,
378+ hash( 1_i8 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
379+ hash( 100_i8 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
380+ hash( i8 :: MAX ) == if B32 { 3293686765 } else { 12973684028562874344 } ,
381381
382- hash( i16 :: MIN ) == if B32 { 1073764727 } else { 8292620222579070801 } ,
382+ hash( i16 :: MIN ) == if B32 { 1073764727 } else { 14218860181193086044 } ,
383383 hash( 0_i16 ) == 0 ,
384- hash( 1_i16 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
385- hash( 100_i16 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
386- hash( i16 :: MAX ) == if B32 { 2366738315 } else { 14155490916776592377 } ,
384+ hash( 1_i16 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
385+ hash( 100_i16 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
386+ hash( i16 :: MAX ) == if B32 { 2366738315 } else { 2060959061933882993 } ,
387387
388- hash( i32 :: MIN ) == if B32 { 16384 } else { 5631751334026900245 } ,
388+ hash( i32 :: MIN ) == if B32 { 16384 } else { 9943947977240134995 } ,
389389 hash( 0_i32 ) == 0 ,
390- hash( 1_i32 ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
391- hash( 100_i32 ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
392- hash( i32 :: MAX ) == if B32 { 1293022740 } else { 11494622028224421821 } ,
390+ hash( 1_i32 ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
391+ hash( 100_i32 ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
392+ hash( i32 :: MAX ) == if B32 { 1293022740 } else { 16232790931690483559 } ,
393393
394- hash( i64 :: MIN ) == if B32 { 16384 } else { 524288 } ,
394+ hash( i64 :: MIN ) == if B32 { 16384 } else { 33554432 } ,
395395 hash( 0_i64 ) == 0 ,
396- hash( 1_i64 ) == if B32 { 275023839 } else { 12583873379513078615 } ,
397- hash( 100_i64 ) == if B32 { 1732383522 } else { 4008740938959785536 } ,
398- hash( i64 :: MAX ) == if B32 { 1017998901 } else { 5862870694198045864 } ,
396+ hash( 1_i64 ) == if B32 { 275023839 } else { 12157901119326311915 } ,
397+ hash( 100_i64 ) == if B32 { 1732383522 } else { 16751747135202103309 } ,
398+ hash( i64 :: MAX ) == if B32 { 1017998901 } else { 6288842954483902996 } ,
399399
400- hash( i128 :: MIN ) == if B32 { 16384 } else { 524288 } ,
400+ hash( i128 :: MIN ) == if B32 { 16384 } else { 33554432 } ,
401401 hash( 0_i128 ) == 0 ,
402- hash( 1_i128 ) == if B32 { 1860738631 } else { 12885773367358079611 } ,
403- hash( 100_i128 ) == if B32 { 1389515751 } else { 15751995649841559633 } ,
404- hash( i128 :: MAX ) == if B32 { 2156005629 } else { 11423841400549517868 } ,
402+ hash( 1_i128 ) == if B32 { 1860738631 } else { 13032756267696824044 } ,
403+ hash( 100_i128 ) == if B32 { 1389515751 } else { 12003541609544029302 } ,
404+ hash( i128 :: MAX ) == if B32 { 2156005629 } else { 11702830760496630567 } ,
405405
406- hash( isize :: MIN ) == if B32 { 16384 } else { 524288 } ,
406+ hash( isize :: MIN ) == if B32 { 16384 } else { 33554432 } ,
407407 hash( 0_isize ) == 0 ,
408- hash( 1_isize ) == if B32 { 3001993707 } else { 12583873379513078615 } ,
409- hash( 100_isize ) == if B32 { 3844759569 } else { 4008740938959785536 } ,
410- hash( isize :: MAX ) == if B32 { 1293022740 } else { 5862870694198045864 } ,
408+ hash( 1_isize ) == if B32 { 3001993707 } else { 12157901119326311915 } ,
409+ hash( 100_isize ) == if B32 { 3844759569 } else { 16751747135202103309 } ,
410+ hash( isize :: MAX ) == if B32 { 1293022740 } else { 6288842954483902996 } ,
411411 }
412412 }
413413
@@ -422,13 +422,13 @@ mod tests {
422422 #[ test]
423423 fn bytes ( ) {
424424 test_hash ! {
425- hash( HashBytes ( & [ ] ) ) == if B32 { 2673204745 } else { 5175017818631658678 } ,
426- hash( HashBytes ( & [ 0 ] ) ) == if B32 { 2948228584 } else { 11037888512829180254 } ,
427- hash( HashBytes ( & [ 0 , 0 , 0 , 0 , 0 , 0 ] ) ) == if B32 { 3223252423 } else { 6891281800865632452 } ,
428- hash( HashBytes ( & [ 1 ] ) ) == if B32 { 2943445104 } else { 4127763515449136980 } ,
429- hash( HashBytes ( & [ 2 ] ) ) == if B32 { 1055423297 } else { 11322700005987241762 } ,
430- hash( HashBytes ( b"uwu" ) ) == if B32 { 2699662140 } else { 2129615206728903013 } ,
431- hash( HashBytes ( b"These are some bytes for testing rustc_hash." ) ) == if B32 { 2303640537 } else { 5513083560975408889 } ,
425+ hash( HashBytes ( & [ ] ) ) == if B32 { 2673204745 } else { 17606491139363777937 } ,
426+ hash( HashBytes ( & [ 0 ] ) ) == if B32 { 2948228584 } else { 5448590020104574886 } ,
427+ hash( HashBytes ( & [ 0 , 0 , 0 , 0 , 0 , 0 ] ) ) == if B32 { 3223252423 } else { 16766921560080789783 } ,
428+ hash( HashBytes ( & [ 1 ] ) ) == if B32 { 2943445104 } else { 5922447956811044110 } ,
429+ hash( HashBytes ( & [ 2 ] ) ) == if B32 { 1055423297 } else { 5229781508510959783 } ,
430+ hash( HashBytes ( b"uwu" ) ) == if B32 { 2699662140 } else { 7168164714682931527 } ,
431+ hash( HashBytes ( b"These are some bytes for testing rustc_hash." ) ) == if B32 { 2303640537 } else { 2349210501944688211 } ,
432432 }
433433 }
434434
0 commit comments