]> git.wh0rd.org - fontconfig.git/commitdiff
Perf optimizations. Inline FcValueCanonicalize, reduce FcValueListPtrU
authorPatrick Lam <plam@MIT.EDU>
Tue, 7 Feb 2006 21:15:33 +0000 (21:15 +0000)
committerPatrick Lam <plam@MIT.EDU>
Tue, 7 Feb 2006 21:15:33 +0000 (21:15 +0000)
    usage, remove redundant cast.
reviewed by: plam

ChangeLog
src/fcpat.c

index 69618f8e6607cb2902a4b3839060e00552a83b96..f61b056658221e4070c4125aabc9db74e1c302c8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-02-07  Dirk Mueller  <dmueller@suse.com>
+       reviewed by: plam
+
+       * src/fcpat.c (FcValueHash, FcValueListHash, FcValueListEntCreate): 
+
+       Perf optimizations.  Inline FcValueCanonicalize, 
+       reduce FcValueListPtrU usage, remove redundant cast.
+
 2006-02-07  Takashi Iwai  <tiwai@suse.de>
        reviewed by: plam
 
index 0a6241b564184f37f9688487804f256a8762a871..f9822e013bf11fc85d698876b48ef9cf250f77a3 100644 (file)
@@ -241,32 +241,31 @@ FcStringHash (const FcChar8 *s)
 }
 
 static FcChar32
-FcValueHash (const FcValue *v0)
+FcValueHash (const FcValue *v)
 {
-    FcValue v = FcValueCanonicalize(v0);
-    switch (v.type) {
+    switch (fc_storage_type(v)) {
     case FcTypeVoid:
        return 0;
     case FcTypeInteger:
-       return (FcChar32) v.u.i;
+       return (FcChar32) v->u.i;
     case FcTypeDouble:
-       return FcDoubleHash (v.u.d);
+       return FcDoubleHash (v->u.d);
     case FcTypeString:
-       return FcStringHash (v.u.s);
+       return FcStringHash (fc_value_string(v));
     case FcTypeBool:
-       return (FcChar32) v.u.b;
+       return (FcChar32) v->u.b;
     case FcTypeMatrix:
-       return (FcDoubleHash (v.u.m->xx) ^ 
-               FcDoubleHash (v.u.m->xy) ^ 
-               FcDoubleHash (v.u.m->yx) ^ 
-               FcDoubleHash (v.u.m->yy));
+       return (FcDoubleHash (v->u.m->xx) ^ 
+               FcDoubleHash (v->u.m->xy) ^ 
+               FcDoubleHash (v->u.m->yx) ^ 
+               FcDoubleHash (v->u.m->yy));
     case FcTypeCharSet:
-       return (FcChar32) v.u.c->num;
+       return (FcChar32) fc_value_charset(v)->num;
     case FcTypeFTFace:
-       return FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->family_name) ^
-              FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->style_name);
+       return FcStringHash ((const FcChar8 *) ((FT_Face) v->u.f)->family_name) ^
+              FcStringHash ((const FcChar8 *) ((FT_Face) v->u.f)->style_name);
     case FcTypeLangSet:
-       return FcLangSetHash (v.u.l);
+       return FcLangSetHash (fc_value_langset(v));
     }
     return FcFalse;
 }
@@ -294,12 +293,12 @@ static FcChar32
 FcValueListHash (FcValueListPtr l)
 {
     FcChar32   hash = 0;
+    FcValueList *l_ptrU;
     
-    while (FcValueListPtrU(l))
+    for (l_ptrU = FcValueListPtrU(l); l_ptrU; 
+        l_ptrU = FcValueListPtrU(l_ptrU->next))
     {
-       hash = ((hash << 1) | (hash >> 31)) ^ 
-           FcValueHash (&FcValueListPtrU(l)->value);
-       l = FcValueListPtrU(l)->next;
+       hash = ((hash << 1) | (hash >> 31)) ^ FcValueHash (&l_ptrU->value);
     }
     return hash;
 }
@@ -404,7 +403,7 @@ FcValueListEntCreate (FcValueListPtr h)
     memset(new, 0, n * sizeof (FcValueList));
     FcMemAlloc (FC_MEM_VALLIST, size);
     e = &ea->ent;
-    e->list = (FcValueListPtr) FcValueListPtrCreateDynamic(new);
+    e->list = FcValueListPtrCreateDynamic(new);
     for (l = h; FcValueListPtrU(l); 
         l = FcValueListPtrU(l)->next, new++)
     {