]> git.wh0rd.org - fontconfig.git/commitdiff
Inline the *PtrU functions to gain perf. Remove unneeded params for the
authorPatrick Lam <plam@MIT.EDU>
Fri, 25 Nov 2005 03:00:51 +0000 (03:00 +0000)
committerPatrick Lam <plam@MIT.EDU>
Fri, 25 Nov 2005 03:00:51 +0000 (03:00 +0000)
    FcCompare* functions.
reviewed by: plam

ChangeLog
src/fcint.h
src/fcmatch.c
src/fcname.c
src/fcpat.c

index 2acd9c49ada1652660491260a14323d487ca6329..afa95c0fd160eac91ec1836a2d56ec9a3d11178b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,14 @@
-2005-11-24  Dirk Mueller <dmueller@suse.com>
+2005-11-24  Dirk Mueller  <dmueller@suse.com>
+       reviewed by: plam
+
+       * src/fcint.h:
+       * src/fcmatch.c (FcCompare*, FcFontSetSort):
+       * src/fcname.c (FcNameUnparseValue):
+
+       Inline the *PtrU functions to gain perf.
+       Remove unneeded params for the FcCompare* functions.
+
+2005-11-24  Dirk Mueller  <dmueller@suse.com>
        reviewed by: plam
        
         * src/fcint.h, fontconfig/fontconfig.h: 
index e20589ccdfbf87bd86f0945ce2730df2df4754c6..3019abb7e019108448e14e8080c5a065a9b1172b 100644 (file)
@@ -806,8 +806,11 @@ FcObjectSerialize (void);
 const char *
 FcObjectPtrU (FcObjectPtr p);
 
-int
-FcObjectPtrCompare (FcObjectPtr a, FcObjectPtr b);
+static __inline__ int
+FcObjectPtrCompare (const FcObjectPtr a, const FcObjectPtr b)
+{
+    return a - b;
+}
 
 void
 FcObjectStaticNameFini (void);
@@ -866,8 +869,28 @@ FcPatternNeededBytesAlign (void);
 void *
 FcPatternDistributeBytes (FcCache * metadata, void * block_ptr);
 
-FcValueList * 
-FcValueListPtrU(FcValueListPtr p);
+/* please don't access these outside of fcpat.c! only visible so that
+ * *PtrU can be inlined. */
+extern FcValueList ** fcvaluelists;
+extern FcPatternElt ** fcpatternelts;
+
+static __inline__ FcValueList * 
+FcValueListPtrU (FcValueListPtr pi)
+{
+    if (pi.bank == FC_BANK_DYNAMIC)
+        return pi.u.dyn;
+
+    return &fcvaluelists[FcCacheBankToIndex(pi.bank)][pi.u.stat];
+}
+
+static __inline__ FcPatternElt *
+FcPatternEltU (FcPatternEltPtr pei)
+{
+    if (pei.bank == FC_BANK_DYNAMIC)
+       return pei.u.dyn;
+
+    return &fcpatternelts[FcCacheBankToIndex(pei.bank)][pei.u.stat];
+}
 
 FcPatternElt *
 FcPatternEltU (FcPatternEltPtr pei);
index b0d4bf8dd31cfa0fd21902e52d35b404d6f00fd7..bc75aa619cfce65c5bfe3f0ce587d26df579d614 100644 (file)
@@ -28,7 +28,7 @@
 #include <stdio.h>
 
 static double
-FcCompareNumber (const char *object, FcValue *value1, FcValue *value2)
+FcCompareNumber (FcValue *value1, FcValue *value2)
 {
     double  v1, v2, v;
     
@@ -59,13 +59,13 @@ FcCompareNumber (const char *object, FcValue *value1, FcValue *value2)
 }
 
 static double
-FcCompareString (const char *object, FcValue *v1, FcValue *v2)
+FcCompareString (FcValue *v1, FcValue *v2)
 {
     return (double) FcStrCmpIgnoreCase (fc_value_string(v1), fc_value_string(v2)) != 0;
 }
 
 static double
-FcCompareFamily (const char *object, FcValue *v1, FcValue *v2)
+FcCompareFamily (FcValue *v1, FcValue *v2)
 {
     /* rely on the guarantee in FcPatternAddWithBinding that
      * families are always FcTypeString. */
@@ -79,7 +79,7 @@ FcCompareFamily (const char *object, FcValue *v1, FcValue *v2)
 }
 
 static double
-FcCompareLang (const char *object, FcValue *v1, FcValue *v2)
+FcCompareLang (FcValue *v1, FcValue *v2)
 {
     FcLangResult    result;
     FcValue value1 = FcValueCanonicalize(v1), value2 = FcValueCanonicalize(v2);
@@ -126,7 +126,7 @@ FcCompareLang (const char *object, FcValue *v1, FcValue *v2)
 }
 
 static double
-FcCompareBool (const char *object, FcValue *v1, FcValue *v2)
+FcCompareBool (FcValue *v1, FcValue *v2)
 {
     if (fc_storage_type(v2) != FcTypeBool || fc_storage_type(v1) != FcTypeBool)
        return -1.0;
@@ -134,13 +134,13 @@ FcCompareBool (const char *object, FcValue *v1, FcValue *v2)
 }
 
 static double
-FcCompareCharSet (const char *object, FcValue *v1, FcValue *v2)
+FcCompareCharSet (FcValue *v1, FcValue *v2)
 {
     return (double) FcCharSetSubtractCount (fc_value_charset(v1), fc_value_charset(v2));
 }
 
 static double
-FcCompareSize (const char *object, FcValue *value1, FcValue *value2)
+FcCompareSize (FcValue *value1, FcValue *value2)
 {
     double  v1, v2, v;
 
@@ -174,7 +174,7 @@ FcCompareSize (const char *object, FcValue *value1, FcValue *value2)
 
 typedef struct _FcMatcher {
     const char     *object;
-    double         (*compare) (const char *object, FcValue *value1, FcValue *value2);
+    double         (*compare) (FcValue *value1, FcValue *value2);
     int                    strong, weak;
 } FcMatcher;
 
@@ -341,8 +341,7 @@ FcCompareValueList (const char  *object,
        for (v2 = v2orig, v2_ptrU = FcValueListPtrU(v2); FcValueListPtrU(v2); 
             v2 = FcValueListPtrU(v2)->next)
        {
-           v = (*_FcMatchers[i].compare) (_FcMatchers[i].object,
-                                          &v1_ptrU->value,
+           v = (*_FcMatchers[i].compare) (&v1_ptrU->value,
                                           &v2_ptrU->value);
            if (v < 0)
            {
@@ -414,39 +413,25 @@ FcCompare (FcPattern      *pat,
     i2 = 0;
     while (i1 < pat->num && i2 < fnt->num)
     {
-       i = FcObjectPtrCompare((FcPatternEltU(pat->elts)+i1)->object,
-                              (FcPatternEltU(fnt->elts)+i2)->object);
+       FcPatternElt *elt_i1 = FcPatternEltU(pat->elts)+i1;
+       FcPatternElt *elt_i2 = FcPatternEltU(fnt->elts)+i2;
+
+       i = FcObjectPtrCompare(elt_i1->object, elt_i2->object);
        if (i > 0)
            i2++;
        else if (i < 0)
            i1++;
        else
        {
-           if (!FcCompareValueList (FcObjectPtrU((FcPatternEltU(pat->elts)+i1)->object),
-                                    (FcPatternEltU(pat->elts)+i1)->values,
-                                    (FcPatternEltU(fnt->elts)+i2)->values,
-                                    0,
-                                    value,
-                                    result))
+           if (!FcCompareValueList (FcObjectPtrU(elt_i1->object), 
+                                    elt_i1->values, elt_i2->values,
+                                    0, value, result))
                return FcFalse;
            i1++;
            i2++;
        }
     }
     return FcTrue;
-#if 0
-    for (i1 = 0; i1 < pat->num; i1++)
-    {
-       for (i2 = 0; i2 < fnt->num; i2++)
-       {
-           if (!strcmp (pat->elts[i1].object, fnt->elts[i2].object))
-           {
-               break;
-           }
-       }
-    }
-    return FcTrue;
-#endif
 }
 
 FcPattern *
@@ -783,8 +768,7 @@ FcFontSetSort (FcConfig         *config,
                    FcPatternGet (p, FC_LANG, i, &patternLang) == FcResultMatch &&
                    FcPatternGet (nodeps[f]->pattern, FC_LANG, 0, &nodeLang) == FcResultMatch)
                {
-                   double  compare = FcCompareLang (FC_LANG, &patternLang, 
-                                                    &nodeLang);
+                   double  compare = FcCompareLang (&patternLang, &nodeLang);
                    if (compare >= 0 && compare < 2)
                    {
                        if (FcDebug () & FC_DBG_MATCHV)
index bf265bd26f63ddc9a4b631b9fd31bbd041cd301e..2fc411f995b39c95b17a888e7760787f70710d8c 100644 (file)
@@ -93,7 +93,8 @@ struct _FcObjectTypeList {
 static const FcObjectTypeList _FcBaseObjectTypesList = {
     0,
     _FcBaseObjectTypes,
-    NUM_OBJECT_TYPES
+    NUM_OBJECT_TYPES,
+    0
 };
 
 static const FcObjectTypeList  *_FcObjectTypes = &_FcBaseObjectTypesList;
@@ -415,12 +416,6 @@ FcObjectUnserialize (FcCache metadata, void *block_ptr)
     return block_ptr;
 }
 
-int
-FcObjectPtrCompare (const FcObjectPtr a, const FcObjectPtr b)
-{
-    return a - b;
-}
-
 static const FcConstant _FcBaseConstants[] = {
     { (FcChar8 *) "thin",          "weight",   FC_WEIGHT_THIN, },
     { (FcChar8 *) "extralight",            "weight",   FC_WEIGHT_EXTRALIGHT, },
@@ -779,7 +774,6 @@ FcNameUnparseString (FcStrBuf           *buf,
 
 static FcBool
 FcNameUnparseValue (FcStrBuf   *buf,
-                   int         bank,
                    FcValue     *v0,
                    FcChar8     *escape)
 {
@@ -820,7 +814,7 @@ FcNameUnparseValueList (FcStrBuf    *buf,
 {
     while (FcValueListPtrU(v))
     {
-       if (!FcNameUnparseValue (buf, v.bank, &FcValueListPtrU(v)->value, escape))
+       if (!FcNameUnparseValue (buf, &FcValueListPtrU(v)->value, escape))
            return FcFalse;
        if (FcValueListPtrU(v = FcValueListPtrU(v)->next))
            if (!FcNameUnparseString (buf, (FcChar8 *) ",", 0))
index ad6afc0065b0e6bb27061bc444ad58410f82be40..b1bb5952e6e2d3d9f8696c40d65ba98c3c57f8e6 100644 (file)
@@ -29,9 +29,9 @@
 
 static FcPattern ** fcpatterns = 0;
 static int fcpattern_bank_count = 0, fcpattern_ptr, fcpattern_count;
-static FcPatternElt ** fcpatternelts = 0;
+FcPatternElt ** fcpatternelts = 0;
 static int fcpatternelt_ptr, fcpatternelt_count;
-static FcValueList ** fcvaluelists = 0;
+FcValueList ** fcvaluelists = 0;
 static int fcvaluelist_bank_count = 0, fcvaluelist_ptr, fcvaluelist_count;
 
 static const char *
@@ -1418,15 +1418,6 @@ FcPatternFini (void)
     FcObjectStaticNameFini ();
 }
 
-FcPatternElt *
-FcPatternEltU (FcPatternEltPtr pei)
-{
-    if (pei.bank == FC_BANK_DYNAMIC)
-       return pei.u.dyn;
-
-    return &fcpatternelts[FcCacheBankToIndex(pei.bank)][pei.u.stat];
-}
-
 static FcPatternEltPtr
 FcPatternEltPtrCreateDynamic (FcPatternElt * e)
 {
@@ -1827,15 +1818,6 @@ FcValueListUnserialize (FcCache metadata, void *block_ptr)
     return block_ptr;
 }
 
-FcValueList * 
-FcValueListPtrU (FcValueListPtr pi)
-{
-    if (pi.bank == FC_BANK_DYNAMIC)
-        return pi.u.dyn;
-
-    return &fcvaluelists[FcCacheBankToIndex(pi.bank)][pi.u.stat];
-}
-
 FcValueListPtr
 FcValueListPtrCreateDynamic(FcValueList * p)
 {