[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