]> git.wh0rd.org Git - fontconfig.git/commitdiff
Manually perform inlining & partial redundancy elimination to reduce calls
authorPatrick Lam <plam@MIT.EDU>
Tue, 22 Nov 2005 04:46:55 +0000 (04:46 +0000)
committerPatrick Lam <plam@MIT.EDU>
Tue, 22 Nov 2005 04:46:55 +0000 (04:46 +0000)
    to FcValueListPtrU.
Only invoke strlen() when really necessary.
reviewed by: plam
reviewed by: plam

ChangeLog
src/fcmatch.c
src/fcstr.c

index e5796a4c5947aa8b8802fa879f38740be0f65d6c..952f9873154aa31b756d9820ce75eb0727c599b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2005-11-21  Dirk Mueller <dmueller@suse.com>
+       reviewed by: plam
+
+       * src/fcmatch.c (FcCompareValueList):
+
+       Manually perform inlining & partial redundancy elimination to
+       reduce calls to FcValueListPtrU.
+
+2005-11-21  Dirk Mueller <dmueller@suse.com>
+       reviewed by: plam
+
+        * src/fcstr.c (FcStrFree, FcStrCaseWalkerInit, FcStrCaseWalkerLong,
+                      FcStrCaseWalkerNext, FcStrCaseWalkerNextIgnoreBlanks): 
+
+       Only invoke strlen() when really necessary.
+       
 2005-11-19  Matthias Clasen  <mclasen@redhat.com>
        reviewed by: plam
 
index 38d083ee5283261de28432cc9c279e243f54ef18..49d41a4ad63513569dd546bede96d89db81d5704 100644 (file)
@@ -254,7 +254,8 @@ FcCompareValueList (const char  *object,
                    double      *value,
                    FcResult    *result)
 {
-    FcValueListPtr v1, v2;
+    FcValueListPtr  v1, v2;
+    FcValueList     *v1_ptrU, *v2_ptrU;
     double         v, best, bestStrong, bestWeak;
     int                    i;
     int                    j;
@@ -336,15 +337,15 @@ FcCompareValueList (const char  *object,
     bestStrong = 1e99;
     bestWeak = 1e99;
     j = 0;
-    for (v1 = v1orig; FcValueListPtrU(v1); 
-        v1 = FcValueListPtrU(v1)->next)
+    for (v1 = v1orig, v1_ptrU = FcValueListPtrU(v1); v1_ptrU;
+        v1 = FcValueListPtrU(v1)->next, v1_ptrU = FcValueListPtrU(v1))
     {
-       for (v2 = v2orig; FcValueListPtrU(v2); 
+       for (v2 = v2orig, v2_ptrU = FcValueListPtrU(v2); FcValueListPtrU(v2); 
             v2 = FcValueListPtrU(v2)->next)
        {
            v = (*_FcMatchers[i].compare) (_FcMatchers[i].object,
-                                           &FcValueListPtrU(v1)->value,
-                                           &FcValueListPtrU(v2)->value);
+                                          &v1_ptrU->value,
+                                          &v2_ptrU->value);
            if (v < 0)
            {
                *result = FcResultTypeMismatch;
@@ -356,10 +357,10 @@ FcCompareValueList (const char  *object,
            if (v < best)
            {
                if (bestValue)
-                   *bestValue = FcValueCanonicalize(&FcValueListPtrU(v2)->value);
+                   *bestValue = FcValueCanonicalize(&v2_ptrU->value);
                best = v;
            }
-           if (FcValueListPtrU(v1)->binding == FcValueBindingStrong)
+           if (v1_ptrU->binding == FcValueBindingStrong)
            {
                if (v < bestStrong)
                    bestStrong = v;
index fb715a46c73a1f03eb11aa973f361e4742665c39..b60c082b2be06bd2ea5c3a46db5e1b176425c7be 100644 (file)
@@ -74,7 +74,6 @@ FcStrFree (FcChar8 *s)
 typedef struct _FcCaseWalker {
     const FcChar8   *read;
     const FcChar8   *src;
-    int                    len;
     FcChar8        utf8[FC_MAX_CASE_FOLD_CHARS + 1];
 } FcCaseWalker;
 
@@ -83,7 +82,6 @@ FcStrCaseWalkerInit (const FcChar8 *src, FcCaseWalker *w)
 {
     w->src = src;
     w->read = 0;
-    w->len = strlen ((char *) src);
 }
 
 static FcChar8
@@ -91,8 +89,9 @@ FcStrCaseWalkerLong (FcCaseWalker *w, FcChar8 r)
 {
     FcChar32   ucs4;
     int                slen;
+    int                len = strlen((char*)w->src);
 
-    slen = FcUtf8ToUcs4 (w->src - 1, &ucs4, w->len + 1);
+    slen = FcUtf8ToUcs4 (w->src - 1, &ucs4, len + 1);
     if (slen <= 0)
        return r;
     if (FC_MIN_FOLD_CHAR <= ucs4 && ucs4 <= FC_MAX_FOLD_CHAR)
@@ -131,7 +130,6 @@ FcStrCaseWalkerLong (FcCaseWalker *w, FcChar8 r)
                
                /* consume rest of src utf-8 bytes */
                w->src += slen - 1;
-               w->len -= slen - 1;
                
                /* read from temp buffer */
                w->utf8[dlen] = '\0';
@@ -155,7 +153,6 @@ FcStrCaseWalkerNext (FcCaseWalker *w)
        w->read = 0;
     }
     r = *w->src++;
-    --w->len;
     
     if ((r & 0xc0) == 0xc0)
        return FcStrCaseWalkerLong (w, r);
@@ -178,7 +175,6 @@ FcStrCaseWalkerNextIgnoreBlanks (FcCaseWalker *w)
     do
     {
        r = *w->src++;
-       --w->len;
     } while (r == ' ');
     
     if ((r & 0xc0) == 0xc0)