*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Tue, 01 Jun 1999 17:07:18 +0200
changeset 4247 42504c49fe2a
parent 4246 23a662cb9b05
child 4248 c8c021bcc347
*** empty log message ***
String.st
--- a/String.st	Mon May 31 18:22:54 1999 +0200
+++ b/String.st	Tue Jun 01 17:07:18 1999 +0200
@@ -1066,7 +1066,6 @@
 	if (l1 != l2) {
 	    RETURN ( false );
 	}
-#undef FAST_STRNCMP
 #ifdef FAST_STRNCMP
 	RETURN ( (strncmp(cp1, cp2, l1) == 0) ? true : false );
 #else
@@ -1327,7 +1326,6 @@
 	    RETURN ( true );
 	}
 
-#undef FAST_STRNCMP
 #ifdef FAST_STRNCMP
 	RETURN ( (strncmp(cp1, cp2, l1) == 0) ? false : true );
 #else
@@ -2091,11 +2089,16 @@
 	    l = l & 3;
 # else
 #  ifdef UINT64
-	    v = (v << 32) | v;
-	    while (l >= 8) {
-		((UINT64 *)dst)[0] = v;
-		dst += 8;
-		l -= 8;
+	    {
+		UINT64 v64;
+
+	        v64 = v;
+		v64 = (v64 << 32) | v;
+	        while (l >= 8) {
+		    ((UINT64 *)dst)[0] = v64;
+		    dst += 8;
+		    l -= 8;
+		}
 	    }
 #  else /* no UINT64 */
 	    while (l >= 16) {
@@ -2912,19 +2915,39 @@
 	    RETURN ( false );
 	}
 
-# ifdef UINT64
+#ifdef UINT64
 	while (len2 > (OHDR_SIZE+sizeof(UINT64))) {
-	    if ( *((unsigned UINT64 *)src1) != *((unsigned UINT64 *)src2) ) {
+	    if ( ((UINT64 *)src1)[0] != ((UINT64 *)src2)[0] ) {
 		RETURN (false);
 	    }
 	    len2 -= sizeof(UINT64);
 	    src1 += sizeof(UINT64);
 	    src2 += sizeof(UINT64);
 	}
-# endif /* UINT64 */
+#else
+# ifdef UNROLL_LOOPS
+	while (len2 > (OHDR_SIZE+sizeof(INT)*4)) {
+	    if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[1] != ((unsigned INT *)src2)[1]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[2] != ((unsigned INT *)src2)[2]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[3] != ((unsigned INT *)src2)[3]) {
+		RETURN (false);
+	    }
+	    len2 -= sizeof(INT)*4;
+	    src1 += sizeof(INT)*4;
+	    src2 += sizeof(INT)*4;
+	}
+# endif /* UNROLL_LOOPS */
+#endif /* UINT64 */
 
 	while (len2 > (OHDR_SIZE+sizeof(INT))) {
-	    if ( *((unsigned INT *)src1) != *((unsigned INT *)src2) ) {
+	    if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
 		RETURN (false);
 	    }
 	    len2 -= sizeof(INT);
@@ -2970,5 +2993,5 @@
 !String class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.137 1999-05-19 13:06:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.138 1999-06-01 15:07:18 cg Exp $'
 ! !