Title: [129831] trunk/Source/WebCore
Revision
129831
Author
macpher...@chromium.org
Date
2012-09-27 19:16:38 -0700 (Thu, 27 Sep 2012)

Log Message

Implement reviewer feedback that I missed on bug 95930.
https://bugs.webkit.org/show_bug.cgi?id=97752

Reviewed by Alexey Proskuryakov.

This patch updates the indentation of function parameters in a few places,
and reserves an appropriate amount of space when using StringBuilder.

* css/CSSBasicShapes.cpp:
(WebCore::buildRectangleString):
(WebCore::CSSBasicShapeRectangle::cssText):
(WebCore::CSSBasicShapeRectangle::serializeResolvingVariables):
(WebCore::CSSBasicShapeCircle::serializeResolvingVariables):
(WebCore::CSSBasicShapeEllipse::serializeResolvingVariables):
(WebCore::buildPolygonString):
* css/Rect.h:
(WebCore::Rect::serializeResolvingVariables):
(WebCore::Quad::serializeResolvingVariables):
(WebCore::Quad::generateCSSString):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (129830 => 129831)


--- trunk/Source/WebCore/ChangeLog	2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/ChangeLog	2012-09-28 02:16:38 UTC (rev 129831)
@@ -1,3 +1,25 @@
+2012-09-27  Luke Macpherson   <macpher...@chromium.org>
+
+        Implement reviewer feedback that I missed on bug 95930.
+        https://bugs.webkit.org/show_bug.cgi?id=97752
+
+        Reviewed by Alexey Proskuryakov.
+
+        This patch updates the indentation of function parameters in a few places,
+        and reserves an appropriate amount of space when using StringBuilder.
+
+        * css/CSSBasicShapes.cpp:
+        (WebCore::buildRectangleString):
+        (WebCore::CSSBasicShapeRectangle::cssText):
+        (WebCore::CSSBasicShapeRectangle::serializeResolvingVariables):
+        (WebCore::CSSBasicShapeCircle::serializeResolvingVariables):
+        (WebCore::CSSBasicShapeEllipse::serializeResolvingVariables):
+        (WebCore::buildPolygonString):
+        * css/Rect.h:
+        (WebCore::Rect::serializeResolvingVariables):
+        (WebCore::Quad::serializeResolvingVariables):
+        (WebCore::Quad::generateCSSString):
+
 2012-09-27  Sheriff Bot  <webkit.review....@gmail.com>
 
         Unreviewed, rolling out r129823.

Modified: trunk/Source/WebCore/css/CSSBasicShapes.cpp (129830 => 129831)


--- trunk/Source/WebCore/css/CSSBasicShapes.cpp	2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/css/CSSBasicShapes.cpp	2012-09-28 02:16:38 UTC (rev 129831)
@@ -39,20 +39,24 @@
 
 static String buildRectangleString(const String& x, const String& y, const String& width, const String& height, const String& radiusX, const String& radiusY)
 {
+    char opening[] = "rectangle(";
+    char separator[] = ", ";
     StringBuilder result;
-    result.appendLiteral("rectangle(");
+    // Compute the required capacity in advance to reduce allocations.
+    result.reserveCapacity((sizeof(opening) - 1) + (5 * (sizeof(separator) -1 )) + 1 + x.length() + y.length() + width.length() + height.length() + radiusX.length() + radiusY.length());
+    result.appendLiteral(opening);
     result.append(x);
-    result.appendLiteral(", ");
+    result.appendLiteral(separator);
     result.append(y);
-    result.appendLiteral(", ");
+    result.appendLiteral(separator);
     result.append(width);
-    result.appendLiteral(", ");
+    result.appendLiteral(separator);
     result.append(height);
     if (!radiusX.isNull()) {
-        result.appendLiteral(", ");
+        result.appendLiteral(separator);
         result.append(radiusX);
         if (!radiusY.isNull()) {
-            result.appendLiteral(", ");
+            result.appendLiteral(separator);
             result.append(radiusY);
         }
     }
@@ -63,22 +67,22 @@
 String CSSBasicShapeRectangle::cssText() const
 {
     return buildRectangleString(m_x->cssText(),
-                                m_y->cssText(),
-                                m_width->cssText(),
-                                m_height->cssText(),
-                                m_radiusX.get() ? m_radiusX->cssText() : String(),
-                                m_radiusY.get() ? m_radiusY->cssText() : String());
+        m_y->cssText(),
+        m_width->cssText(),
+        m_height->cssText(),
+        m_radiusX.get() ? m_radiusX->cssText() : String(),
+        m_radiusY.get() ? m_radiusY->cssText() : String());
 }
 
 #if ENABLE(CSS_VARIABLES)
 String CSSBasicShapeRectangle::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
 {
     return buildRectangleString(m_x->serializeResolvingVariables(variables),
-                                m_y->serializeResolvingVariables(variables),
-                                m_width->serializeResolvingVariables(variables),
-                                m_height->serializeResolvingVariables(variables),
-                                m_radiusX.get() ? m_radiusX->serializeResolvingVariables(variables) : String(),
-                                m_radiusY.get() ? m_radiusY->serializeResolvingVariables(variables) : String());
+        m_y->serializeResolvingVariables(variables),
+        m_width->serializeResolvingVariables(variables),
+        m_height->serializeResolvingVariables(variables),
+        m_radiusX.get() ? m_radiusX->serializeResolvingVariables(variables) : String(),
+        m_radiusY.get() ? m_radiusY->serializeResolvingVariables(variables) : String());
 }
 
 bool CSSBasicShapeRectangle::hasVariableReference() const
@@ -106,8 +110,8 @@
 String CSSBasicShapeCircle::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
 {
     return buildCircleString(m_centerX->serializeResolvingVariables(variables),
-                             m_centerY->serializeResolvingVariables(variables),
-                             m_radius->serializeResolvingVariables(variables));
+        m_centerY->serializeResolvingVariables(variables),
+        m_radius->serializeResolvingVariables(variables));
 }
 
 bool CSSBasicShapeCircle::hasVariableReference() const
@@ -132,9 +136,9 @@
 String CSSBasicShapeEllipse::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
 {
     return buildEllipseString(m_centerX->serializeResolvingVariables(variables),
-                              m_centerY->serializeResolvingVariables(variables),
-                              m_radiusX->serializeResolvingVariables(variables),
-                              m_radiusY->serializeResolvingVariables(variables));
+        m_centerY->serializeResolvingVariables(variables),
+        m_radiusX->serializeResolvingVariables(variables),
+        m_radiusY->serializeResolvingVariables(variables));
 }
 
 bool CSSBasicShapeEllipse::hasVariableReference() const
@@ -148,18 +152,32 @@
 
 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points)
 {
+    ASSERT(!(points.size() % 2));
+
     StringBuilder result;
+    char evenOddOpening[] = "polygon(evenodd, ";
+    char nonZeroOpening[] = "polygon(nonzero, ";
+    char commaSeparator[] = ", ";
+    COMPILE_ASSERT(sizeof(evenOddOpening) == sizeof(nonZeroOpening), polygon_string_openings_have_same_length);
+    
+    // Compute the required capacity in advance to reduce allocations.
+    size_t length = sizeof(evenOddOpening) - 1;
+    for (size_t i = 0; i < points.size(); i += 2) {
+        if (i)
+            length += (sizeof(commaSeparator) - 1);
+        // add length of two strings, plus one for the space separator.
+        length += points[i].length() + 1 + points[i + 1].length();
+    }
+    result.reserveCapacity(length);
 
     if (windRule == RULE_EVENODD)
-        result.appendLiteral("polygon(evenodd, ");
+        result.appendLiteral(evenOddOpening);
     else
-        result.appendLiteral("polygon(nonzero, ");
+        result.appendLiteral(nonZeroOpening);
 
-    ASSERT(!(points.size() % 2));
-
     for (size_t i = 0; i < points.size(); i += 2) {
         if (i)
-            result.appendLiteral(", ");
+            result.appendLiteral(commaSeparator);
         result.append(points[i]);
         result.append(' ');
         result.append(points[i + 1]);

Modified: trunk/Source/WebCore/css/Rect.h (129830 => 129831)


--- trunk/Source/WebCore/css/Rect.h	2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/css/Rect.h	2012-09-28 02:16:38 UTC (rev 129831)
@@ -83,9 +83,9 @@
     String serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
     {
         return generateCSSString(top()->customSerializeResolvingVariables(variables),
-                                 right()->customSerializeResolvingVariables(variables),
-                                 bottom()->customSerializeResolvingVariables(variables),
-                                 left()->customSerializeResolvingVariables(variables));
+            right()->customSerializeResolvingVariables(variables),
+            bottom()->customSerializeResolvingVariables(variables),
+            left()->customSerializeResolvingVariables(variables));
     }
 #endif
 
@@ -113,9 +113,9 @@
     String serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
     {
         return generateCSSString(top()->customSerializeResolvingVariables(variables),
-                                 right()->customSerializeResolvingVariables(variables),
-                                 bottom()->customSerializeResolvingVariables(variables),
-                                 left()->customSerializeResolvingVariables(variables));
+            right()->customSerializeResolvingVariables(variables),
+            bottom()->customSerializeResolvingVariables(variables),
+            left()->customSerializeResolvingVariables(variables));
     }
 #endif
 
@@ -125,6 +125,8 @@
     static String generateCSSString(const String& top, const String& right, const String& bottom, const String& left)
     {
         StringBuilder result;
+        // reserve space for the four strings, plus three space separator characters.
+        result.reserveCapacity(top.length() + right.length() + bottom.length() + left.length() + 3);
         result.append(top);
         if (right != top || bottom != top || left != top) {
             result.append(' ');
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to