A new version of Collections was added to project The Inbox:
http://source.squeak.org/inbox/Collections-cbc.652.mcz==================== Summary ====================
Name: Collections-cbc.652
Author: cbc
Time: 31 August 2015, 8:32:50.179 pm
UUID: 88079716-328d-4a41-8838-595e6782882c
Ancestors: Collections-cbc.651
#unsignedLong64At:put:bigEndian: on average fast.
=============== Diff against Collections-cbc.651 ===============
Item was changed:
----- Method: ByteArray>>unsignedLong64At:put:bigEndian: (in category 'platform independent access') -----
+ unsignedLong64At: index put: value bigEndian: aBool
+ "Minimize largeInteger arithmetic"
+ | ix |
+ aBool ifFalse: [
+ ix := index - 1.
+ 1 to: 8 do: [:pos|
+ self at: ix + pos put: (value digitAt: pos)
- unsignedLong64At: index put: val bigEndian: aBool
- aBool
- ifTrue: [
- self unsignedLongAt: index put: (val bitShift: -32) bigEndian: true.
- self unsignedLongAt: index+4 put: (val bitAnd: 16rFFFFFFFF) bigEndian: true.
- ]
- ifFalse: [
- self unsignedLongAt: index put: (val bitAnd: 16rFFFFFFFF) bigEndian: false.
- self unsignedLongAt: index+4 put: (val bitShift: -32) bigEndian: false.
].
+ ] ifTrue: [
+ ix := index + 8.
+ 1 to: 8 do: [:pos|
+ self at: ix - pos put: (value digitAt: pos)
+ ].
+ ].
+ ^value
- ^val
!