classes.tuple: switch to python's tuplehash(). Fixes #153.
							parent
							
								
									4ad888b530
								
							
						
					
					
						commit
						195d5834d4
					
				| 
						 | 
					@ -350,17 +350,17 @@ M: tuple clone (clone) ; inline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: tuple equal? over tuple? [ tuple= ] [ 2drop f ] if ;
 | 
					M: tuple equal? over tuple? [ tuple= ] [ 2drop f ] if ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GENERIC: tuple-hashcode ( n tuple -- x )
 | 
					: tuple-hashcode ( depth obj -- hash )
 | 
				
			||||||
 | 
					 | 
				
			||||||
M: tuple tuple-hashcode
 | 
					 | 
				
			||||||
    [
 | 
					    [
 | 
				
			||||||
        [ class hashcode ] [ tuple-size iota ] [ ] tri
 | 
					        [ drop 1000003 ] dip
 | 
				
			||||||
        [ rot ] dip [
 | 
					        [ class hashcode ] [ tuple-size ] bi
 | 
				
			||||||
            swapd array-nth hashcode* sequence-hashcode-step
 | 
					        [ dup fixnum+fast 82520 fixnum+fast ] [ iota ] bi
 | 
				
			||||||
        ] 2curry each
 | 
					    ] 2keep [
 | 
				
			||||||
    ] recursive-hashcode ;
 | 
					        swapd array-nth hashcode* rot fixnum-bitxor
 | 
				
			||||||
 | 
					        pick fixnum*fast [ [ fixnum+fast ] keep ] dip swap
 | 
				
			||||||
 | 
					    ] 2curry each drop nip 97531 fixnum+fast ; inline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: tuple hashcode* tuple-hashcode ;
 | 
					M: tuple hashcode* [ tuple-hashcode ] recursive-hashcode ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: tuple-class new
 | 
					M: tuple-class new
 | 
				
			||||||
    dup "prototype" word-prop [ (clone) ] [ tuple-layout <tuple> ] ?if ;
 | 
					    dup "prototype" word-prop [ (clone) ] [ tuple-layout <tuple> ] ?if ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue