diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2002-05-29 10:35:34 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2002-05-29 10:35:34 (GMT) |
commit | 52319201a0f33f5984298267ba05ede5689eb818 (patch) | |
tree | 69690c28d7ea044538f1557ec58740707718d328 /generic/tclUtf.c | |
parent | 3a1941e7d007e93449aa22085687a8fafaddad7e (diff) | |
download | tcl-52319201a0f33f5984298267ba05ede5689eb818.zip tcl-52319201a0f33f5984298267ba05ede5689eb818.tar.gz tcl-52319201a0f33f5984298267ba05ede5689eb818.tar.bz2 |
Made Tcl_UniCharNcmp faster on big-endian machines; the system memcmp()is
probably optimized far in excess of anything we could do! Little-endian
just use the old code...
Diffstat (limited to 'generic/tclUtf.c')
-rw-r--r-- | generic/tclUtf.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c index 56dcaca..667bb6d 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtf.c,v 1.24 2002/05/29 09:09:57 hobbs Exp $ + * RCS: @(#) $Id: tclUtf.c,v 1.25 2002/05/29 10:35:46 dkf Exp $ */ #include "tclInt.h" @@ -1351,16 +1351,23 @@ Tcl_UniCharNcmp(cs, ct, n) CONST Tcl_UniChar *ct; /* Unicode string cs is compared to. */ unsigned long n; /* Number of unichars to compare. */ { +#ifdef TCL_OPTIMIZE_UNICODE_COMPARE /* - * We can't simply call 'memcmp(cs, ct, n*sizeof(Tcl_UniChar));' - * because that may not be lexically correct. + * We are definitely on a big-endian machine; memcmp() is safe */ - for ( ; n != 0; n--, cs++, ct++) { + return memcmp(cs, ct, n*sizeof(Tcl_UniChar)); + +#else /* !TCL_OPTIMIZE_UNICODE_COMPARE */ + /* + * We can't simply call memcmp() because that is not lexically correct. + */ + for ( ; n != 0; cs++, ct++, n--) { if (*cs != *ct) { return (*cs - *ct); } } return 0; +#endif /* TCL_OPTIMIZE_UNICODE_COMPARE */ } /* |