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?