classes.tuple: switch to python's tuplehash(). Fixes #153.

db4
John Benediktsson 2011-10-02 13:48:04 -07:00
parent 4ad888b530
commit 195d5834d4
1 changed files with 9 additions and 9 deletions

View File

@ -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 ;