--- 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 $'
! !