Nicolas Cellier uploaded a new version of Traits to project The Trunk:
http://source.squeak.org/trunk/Traits-nice.246.mcz==================== Summary ====================
Name: Traits-nice.246
Author: nice
Time: 24 December 2009, 2:56:36 am
UUID: 6d2b0928-0c68-43be-932b-83b501eee9ba
Ancestors: Traits-ar.245
Move two private Quick* classes off the Array hierarchy
The 3 failing trait tests are unrelated...
=============== Diff against Traits-ar.245 ===============
Item was added:
+ ----- Method: QuickStack>>last (in category 'accessing') -----
+ last
+ ^self at: top!
Item was changed:
+ Object variableSubclass: #QuickIntegerDictionary
- Array variableSubclass: #QuickIntegerDictionary
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Traits-LocalSends'!
!QuickIntegerDictionary commentStamp: 'dvf 8/4/2005 11:06' prior: 0!
This implementation serves as a very quick dictionary under the assumption that the keys are small natural numbers.!
Item was changed:
+ Object variableSubclass: #QuickStack
- Array variableSubclass: #QuickStack
instanceVariableNames: 'top'
classVariableNames: ''
poolDictionaries: ''
category: 'Traits-LocalSends'!
!QuickStack commentStamp: 'apb 8/30/2003 10:55' prior: 0!
This class is a quick and dirty implementation of a stack, designed to be used in the
SendsInfo abstract interpreter. As opposed to using an OrderedCollection, this stack is quick because it can be emptied in a single assignment, and dirty because elements above the logical top of the stack (i.e., those that have been popped off) are not nil'ed out. For our application, these are important optimizations with no ill effects.
QuickStacks will expand beyond their initial size if required, but we intend that the initial size will always be sufficient, so the efficiency of this feature is not important.
!
Item was added:
+ ----- Method: QuickStack>>replaceFrom:to:with:startingAt: (in category 'private') -----
+ replaceFrom: start to: stop with: replacement startingAt: repStart
+ "Primitive. This destructively replaces elements from start to stop in the receiver starting at index, repStart, in the collection, replacement. Answer the receiver. Range checks are performed in the primitive only. Optional. See Object documentation whatIsAPrimitive."
+ <primitive: 105>
+ | index repOff |
+ repOff := repStart - start.
+ index := start - 1.
+ [(index := index + 1) <= stop]
+ whileTrue: [self at: index put: (replacement at: repOff + index)]!