#TUNING by stefan
authorStefan Vogel <sv@exept.de>
Tue, 17 May 2016 15:47:49 +0200
changeset 19865 6b114e3b40b9
parent 19864 d4631dab6262
child 19866 69742aa1fd63
#TUNING by stefan class: OrderedCollection changed: #removeAllSuchThat: moved tag to fix grow of OrderedCollection of size 1
OrderedCollection.st
--- a/OrderedCollection.st	Tue May 17 11:53:06 2016 +0200
+++ b/OrderedCollection.st	Tue May 17 15:47:49 2016 +0200
@@ -324,6 +324,7 @@
 ! !
 
 
+
 !OrderedCollection methodsFor:'accessing'!
 
 at:anInteger
@@ -751,18 +752,21 @@
 
     |removed element 
      srcIndex "{ Class: SmallInteger }"
-     dstIndex "{ Class: SmallInteger }"|
+     dstIndex "{ Class: SmallInteger }"
+     lastIdx "{ Class: SmallInteger }"|
 
     "/ first search forward to the first element which has
     "/ to be removed (meets the criteria)
     srcIndex := firstIndex.
+    lastIdx := lastIndex.
+
     [ 
-        srcIndex > lastIndex
+        srcIndex > lastIdx
         or:[ aBlock value:(contentsArray at:srcIndex) ]
     ] whileFalse:[
         srcIndex := srcIndex + 1.
     ].
-    srcIndex > lastIndex ifTrue:[
+    srcIndex > lastIdx ifTrue:[
         "/ nothing removed
         ^ #()
     ].
@@ -774,9 +778,8 @@
     dstIndex := srcIndex.
     srcIndex := srcIndex + 1.
     
-    [ srcIndex <= lastIndex ] whileTrue:[
-        element := contentsArray at:srcIndex.
-        srcIndex := srcIndex + 1.
+    srcIndex to:lastIdx do:[:idx|
+        element := contentsArray at:idx.
         (aBlock value:element) ifTrue:[
             removed add:element
         ] ifFalse:[
@@ -784,7 +787,7 @@
             dstIndex := dstIndex + 1.
         ].
     ].
-    contentsArray from:dstIndex to:lastIndex put:nil.
+    contentsArray from:dstIndex to:lastIdx put:nil.
     lastIndex := dstIndex - 1.
     ^ removed