I happened to look at the new code for LayoutFrame>>#hash

hash
        ^self species hash bitXor: 
                (self leftFraction bitXor: 
                (self leftOffset bitXor: 
                (self topFraction bitXor:
                (self topOffset bitXor: 
                (self rightFraction bitXor: 
                (self rightOffset bitXor: 
                (self bottomFraction bitXor: 
                self bottomOffset)))))))

This is a terrible, terrible way to compute a hash.

0 xor 0 = 1 xor 1 = 2 xor 2 = etc.

NEVER compute hashes with xor, that's wrong, and it causes horrible, hard to 
debug, performance bugs down the road.

SequenceableCollection>>#hash looks more like a correct way of doing it. I do 
not know what is the correct, efficient way to reuse this logic in 
LayoutFrame>>#hash.

By the way, how do you guys do code reviews for code integrated into the core?


Reply via email to