[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:57:31 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 3ae50982f4a8c7ec8867f58c513aeb3c31a8a348
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Mar 15 13:57:57 2002 +0000

            Optimizations that remove unnecessary cfstring allocations of local scope
            strings.  QString::gstring_toQString and QString::gstring_toCFString were
            added to simplify the reuse of a static CFString as the backing store for
            local QStrings.  Hit the top two problem areas.  Many more gains to be had
            by using this technique.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@747 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 75488e8..df5fc1c 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,18 @@
+2002-03-15  Richard Williamson  <rjw at apple.com>
+
+        Optimizations that remove unnecessary cfstring allocations of local scope
+        strings.  QString::gstring_toQString and QString::gstring_toCFString were
+        added to simplify the reuse of a static CFString as the backing store for
+        local QStrings.  Hit the top two problem areas.  Many more gains to be had
+        by using this technique.
+        
+	* src/kdelibs/khtml/css/cssstyleselector.cpp:
+	(CSSStyleSelector::checkOneSelector):
+	* src/kdelibs/khtml/rendering/render_text.cpp: (RenderText::calcMinMaxWidth):
+	* src/kwq/KWQString.mm: (QString::gstring_toQString),
+	(QString::gstring_toCFString):
+	* src/kwq/qt/qstring.h:
+
 2002-03-14  Richard Williamson  <rjw at apple.com>
 
         Fixed another problem in QString::find().
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 75488e8..df5fc1c 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,18 @@
+2002-03-15  Richard Williamson  <rjw at apple.com>
+
+        Optimizations that remove unnecessary cfstring allocations of local scope
+        strings.  QString::gstring_toQString and QString::gstring_toCFString were
+        added to simplify the reuse of a static CFString as the backing store for
+        local QStrings.  Hit the top two problem areas.  Many more gains to be had
+        by using this technique.
+        
+	* src/kdelibs/khtml/css/cssstyleselector.cpp:
+	(CSSStyleSelector::checkOneSelector):
+	* src/kdelibs/khtml/rendering/render_text.cpp: (RenderText::calcMinMaxWidth):
+	* src/kwq/KWQString.mm: (QString::gstring_toQString),
+	(QString::gstring_toCFString):
+	* src/kwq/qt/qstring.h:
+
 2002-03-14  Richard Williamson  <rjw at apple.com>
 
         Fixed another problem in QString::find().
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 75488e8..df5fc1c 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,18 @@
+2002-03-15  Richard Williamson  <rjw at apple.com>
+
+        Optimizations that remove unnecessary cfstring allocations of local scope
+        strings.  QString::gstring_toQString and QString::gstring_toCFString were
+        added to simplify the reuse of a static CFString as the backing store for
+        local QStrings.  Hit the top two problem areas.  Many more gains to be had
+        by using this technique.
+        
+	* src/kdelibs/khtml/css/cssstyleselector.cpp:
+	(CSSStyleSelector::checkOneSelector):
+	* src/kdelibs/khtml/rendering/render_text.cpp: (RenderText::calcMinMaxWidth):
+	* src/kwq/KWQString.mm: (QString::gstring_toQString),
+	(QString::gstring_toCFString):
+	* src/kwq/qt/qstring.h:
+
 2002-03-14  Richard Williamson  <rjw at apple.com>
 
         Fixed another problem in QString::find().
diff --git a/WebCore/khtml/css/cssstyleselector.cpp b/WebCore/khtml/css/cssstyleselector.cpp
index 9513da4..2ecc138 100644
--- a/WebCore/khtml/css/cssstyleselector.cpp
+++ b/WebCore/khtml/css/cssstyleselector.cpp
@@ -470,6 +470,13 @@ static void checkPseudoState( DOM::ElementImpl *e )
     pseudoState = KHTMLFactory::vLinks()->contains( u ) ? PseudoVisited : PseudoLink;
 }
 
+#ifdef APPLE_CHANGES
+#define OPTIMIZE_STRING_USAGE
+#ifdef OPTIMIZE_STRING_USAGE
+static CFMutableStringRef reuseableString = 0;
+#endif
+#endif
+
 bool CSSStyleSelector::checkOneSelector(DOM::CSSSelector *sel, DOM::ElementImpl *e)
 {
 
@@ -523,9 +530,13 @@ bool CSSStyleSelector::checkOneSelector(DOM::CSSSelector *sel, DOM::ElementImpl
     }
     if(sel->match == CSSSelector::Pseudo)
     {
+#if (defined(APPLE_CHANGES) && defined(OPTIMIZE_STRING_USAGE))
+	const QString value = QString::gstring_toQString(&reuseableString, (UniChar *)(sel->value.unicode()), sel->value.length());
+#else
         // Pseudo elements. We need to check first child here. No dynamic pseudo
         // elements for the moment
 	const QString& value = sel->value.string();
+#endif
 	//kdDebug() << "CSSOrderedRule::pseudo " << value << endl;
 	if(value == "first-child") {
 	    // first-child matches the first child that is an element!
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index 15e0cd8..237dcbe 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -694,11 +694,7 @@ void RenderText::calcMinMaxWidth()
         if (wordlen)
         {
 #if (defined(APPLE_CHANGES) && defined(OPTIMIZE_STRING_USAGE))
-            if (reuseableString == 0)
-                reuseableString = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, (UniChar *)(str->s+i), wordlen, wordlen, kCFAllocatorDefault);
-            else
-                CFStringSetExternalCharactersNoCopy (reuseableString, (UniChar *)(str->s+i), wordlen, wordlen);
-            int w = _fm._width(reuseableString);
+            int w = _fm._width(QString::gstring_toCFString(&reuseableString, (UniChar *)(str->s+i), wordlen));
 #else
             int w = _fm.width(QConstString(str->s+i, wordlen).string());
 #endif
diff --git a/WebCore/kwq/KWQString.h b/WebCore/kwq/KWQString.h
index 93a6da6..45265e8 100644
--- a/WebCore/kwq/KWQString.h
+++ b/WebCore/kwq/KWQString.h
@@ -351,6 +351,9 @@ public:
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
     static QString fromCFString(CFStringRef);
+    
+    static QString gstring_toQString(CFMutableStringRef *ref, UniChar *uchars, int len);
+    static CFMutableStringRef gstring_toCFString(CFMutableStringRef *ref, UniChar *uchars, int len);
 
     // constructors, copy constructors, and destructors ------------------------
 
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index 6d6aa27..cbe4bed 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -171,6 +171,24 @@ QString QString::fromCFString(CFStringRef cfs)
     return qs;
 }
 
+QString QString::gstring_toQString(CFMutableStringRef *ref, UniChar *uchars, int len){
+    if (*ref == 0)
+        *ref = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, uchars, len, len, kCFAllocatorDefault);
+    else
+        CFStringSetExternalCharactersNoCopy (*ref, uchars, len, len);
+    return QString::fromCFMutableString(*ref);
+}
+
+CFMutableStringRef QString::gstring_toCFString(CFMutableStringRef *ref, UniChar *uchars, int len)
+{
+    if (*ref == 0)
+        *ref = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, uchars, len, len, kCFAllocatorDefault);
+    else
+        CFStringSetExternalCharactersNoCopy (*ref, uchars, len, len);
+    return *ref;
+}
+
+
 
 // constructors, copy constructors, and destructors ----------------------------
 
diff --git a/WebCore/kwq/qt/qstring.h b/WebCore/kwq/qt/qstring.h
index 93a6da6..45265e8 100644
--- a/WebCore/kwq/qt/qstring.h
+++ b/WebCore/kwq/qt/qstring.h
@@ -351,6 +351,9 @@ public:
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
     static QString fromCFString(CFStringRef);
+    
+    static QString gstring_toQString(CFMutableStringRef *ref, UniChar *uchars, int len);
+    static CFMutableStringRef gstring_toCFString(CFMutableStringRef *ref, UniChar *uchars, int len);
 
     // constructors, copy constructors, and destructors ------------------------
 
diff --git a/WebCore/src/kdelibs/khtml/css/cssstyleselector.cpp b/WebCore/src/kdelibs/khtml/css/cssstyleselector.cpp
index 9513da4..2ecc138 100644
--- a/WebCore/src/kdelibs/khtml/css/cssstyleselector.cpp
+++ b/WebCore/src/kdelibs/khtml/css/cssstyleselector.cpp
@@ -470,6 +470,13 @@ static void checkPseudoState( DOM::ElementImpl *e )
     pseudoState = KHTMLFactory::vLinks()->contains( u ) ? PseudoVisited : PseudoLink;
 }
 
+#ifdef APPLE_CHANGES
+#define OPTIMIZE_STRING_USAGE
+#ifdef OPTIMIZE_STRING_USAGE
+static CFMutableStringRef reuseableString = 0;
+#endif
+#endif
+
 bool CSSStyleSelector::checkOneSelector(DOM::CSSSelector *sel, DOM::ElementImpl *e)
 {
 
@@ -523,9 +530,13 @@ bool CSSStyleSelector::checkOneSelector(DOM::CSSSelector *sel, DOM::ElementImpl
     }
     if(sel->match == CSSSelector::Pseudo)
     {
+#if (defined(APPLE_CHANGES) && defined(OPTIMIZE_STRING_USAGE))
+	const QString value = QString::gstring_toQString(&reuseableString, (UniChar *)(sel->value.unicode()), sel->value.length());
+#else
         // Pseudo elements. We need to check first child here. No dynamic pseudo
         // elements for the moment
 	const QString& value = sel->value.string();
+#endif
 	//kdDebug() << "CSSOrderedRule::pseudo " << value << endl;
 	if(value == "first-child") {
 	    // first-child matches the first child that is an element!
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_text.cpp b/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
index 15e0cd8..237dcbe 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
@@ -694,11 +694,7 @@ void RenderText::calcMinMaxWidth()
         if (wordlen)
         {
 #if (defined(APPLE_CHANGES) && defined(OPTIMIZE_STRING_USAGE))
-            if (reuseableString == 0)
-                reuseableString = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, (UniChar *)(str->s+i), wordlen, wordlen, kCFAllocatorDefault);
-            else
-                CFStringSetExternalCharactersNoCopy (reuseableString, (UniChar *)(str->s+i), wordlen, wordlen);
-            int w = _fm._width(reuseableString);
+            int w = _fm._width(QString::gstring_toCFString(&reuseableString, (UniChar *)(str->s+i), wordlen));
 #else
             int w = _fm.width(QConstString(str->s+i, wordlen).string());
 #endif
diff --git a/WebCore/src/kwq/KWQString.mm b/WebCore/src/kwq/KWQString.mm
index 6d6aa27..cbe4bed 100644
--- a/WebCore/src/kwq/KWQString.mm
+++ b/WebCore/src/kwq/KWQString.mm
@@ -171,6 +171,24 @@ QString QString::fromCFString(CFStringRef cfs)
     return qs;
 }
 
+QString QString::gstring_toQString(CFMutableStringRef *ref, UniChar *uchars, int len){
+    if (*ref == 0)
+        *ref = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, uchars, len, len, kCFAllocatorDefault);
+    else
+        CFStringSetExternalCharactersNoCopy (*ref, uchars, len, len);
+    return QString::fromCFMutableString(*ref);
+}
+
+CFMutableStringRef QString::gstring_toCFString(CFMutableStringRef *ref, UniChar *uchars, int len)
+{
+    if (*ref == 0)
+        *ref = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocatorDefault, uchars, len, len, kCFAllocatorDefault);
+    else
+        CFStringSetExternalCharactersNoCopy (*ref, uchars, len, len);
+    return *ref;
+}
+
+
 
 // constructors, copy constructors, and destructors ----------------------------
 
diff --git a/WebCore/src/kwq/qt/qstring.h b/WebCore/src/kwq/qt/qstring.h
index 93a6da6..45265e8 100644
--- a/WebCore/src/kwq/qt/qstring.h
+++ b/WebCore/src/kwq/qt/qstring.h
@@ -351,6 +351,9 @@ public:
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
     static QString fromCFString(CFStringRef);
+    
+    static QString gstring_toQString(CFMutableStringRef *ref, UniChar *uchars, int len);
+    static CFMutableStringRef gstring_toCFString(CFMutableStringRef *ref, UniChar *uchars, int len);
 
     // constructors, copy constructors, and destructors ------------------------
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list