.
--- a/Array.st Tue Aug 15 21:39:56 1995 +0200
+++ b/Array.st Wed Aug 16 01:44:42 1995 +0200
@@ -21,7 +21,7 @@
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libbasic/Array.st,v 1.36 1995-08-13 03:01:58 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Array.st,v 1.37 1995-08-15 23:44:42 claus Exp $
'!
!Array class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
version
"
-$Header: /cvs/stx/stx/libbasic/Array.st,v 1.36 1995-08-13 03:01:58 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Array.st,v 1.37 1995-08-15 23:44:42 claus Exp $
"
!
@@ -524,6 +524,25 @@
spc = __qSpace(nObj);
srcP = _ArrayInstPtr(self)->a_element;
dstP = _ArrayInstPtr(nObj)->a_element;
+#ifdef UNROLL_LOOPS
+ while (nIndex >= 4) {
+ element = srcP[0];
+ dstP[0] = element;
+ __STORE_SPC(nObj, element, spc);
+ element = srcP[1];
+ dstP[1] = element;
+ __STORE_SPC(nObj, element, spc);
+ element = srcP[2];
+ dstP[2] = element;
+ __STORE_SPC(nObj, element, spc);
+ element = srcP[3];
+ dstP[3] = element;
+ __STORE_SPC(nObj, element, spc);
+ srcP += 4;
+ dstP += 4;
+ nIndex -= 4;
+ }
+#endif
while (nIndex--) {
element = *srcP++;
*dstP++ = element;
@@ -559,6 +578,20 @@
if ((INT)anObject == 0) {
memset(dst, 0, __OBJS2BYTES__(nIndex));
} else {
+#ifdef UNROLL_LOOPS
+ while (nIndex >= 8) {
+ dst[0] = anObject;
+ dst[1] = anObject;
+ dst[2] = anObject;
+ dst[3] = anObject;
+ dst[4] = anObject;
+ dst[5] = anObject;
+ dst[6] = anObject;
+ dst[7] = anObject;
+ dst += 8;
+ nIndex -= 8;
+ }
+#endif
for (; nIndex; nIndex--) {
*dst++ = anObject;
}