Array.st
branchjv
changeset 17976 50c2416f962a
parent 17966 8b5df02e171f
child 18011 deb0c3355881
--- a/Array.st	Mon Oct 29 17:05:17 2012 +0000
+++ b/Array.st	Mon Oct 29 22:07:56 2012 +0000
@@ -2143,6 +2143,7 @@
                     RETURN (__mkSmallInteger(0));
                 }
 #endif
+#ifdef MAKES_IT_SLOWER_BUT_WHY
                 if (__isSmallInteger(e)) {
                     /* search for a small number */
                     while (index < nIndex) {
@@ -2151,26 +2152,27 @@
                             RETURN ( __mkSmallInteger(index - nInsts) );
                         }
                         if (!__isSmallInteger(element)) {
-                            if ((*eq.ilc_func)(e,
-                                                @symbol(=), 
-                                                nil,&eq,
-                                                element) == true) {
-                                RETURN ( __mkSmallInteger(index - nInsts) );
+                            if (element != nil) {
+                                if ((*eq.ilc_func)(e,
+                                                   @symbol(=), 
+                                                   nil,&eq,
+                                                   element) == true) {
+                                    RETURN ( __mkSmallInteger(index - nInsts) );
+                                }
+                                /*
+                                 * send of #= could have lead to a GC - refetch e
+                                 */
+                                e = anElement;
                             }
-                            /*
-                             * send of #= could have lead to a GC - refetch e
-                             */
-                            e = anElement;
                         }
                     }
                     RETURN (__mkSmallInteger(0));
                 }
+#endif /* MAKES_IT_SLOWER_BUT_WHY */
 
                 while (index < nIndex) {
                     element = __InstPtr(self)->i_instvars[index++];
                     if (element != nil) {
-                        e = anElement;
-
                         if ((element == e) 
                          || ((*eq.ilc_func)(e,
                                             @symbol(=), 
@@ -2178,6 +2180,10 @@
                                             element) == true)) {
                             RETURN ( __mkSmallInteger(index - nInsts) );
                         }
+                        /*
+                         * send of #= could have lead to a GC - refetch e
+                         */
+                        e = anElement;
                     }
                 }
             } else {
@@ -2560,15 +2566,15 @@
 !Array class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.151 2012/07/26 14:06:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.152 2012/10/10 16:30:53 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Array.st,v 1.151 2012/07/26 14:06:44 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Array.st,v 1.152 2012/10/10 16:30:53 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Array.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Id: Array.st 10858 2012-10-29 22:07:56Z vranyj1 $'
 ! !