Make CSS.PrefixUsage histogram smaller to save memory
authortony@chromium.org <tony@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Sep 2012 21:11:04 +0000 (21:11 +0000)
committertony@chromium.org <tony@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Sep 2012 21:11:04 +0000 (21:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=96941

Reviewed by Ojan Vafai.

Each bucket costs about 12 bytes. This reduces the size of the histogram
from 600 to 384, which will save about 2.5k per renderer and browser
process.

In the long run, we could probably generate a table in makeprop.pl that
only has the webkit prefix values to save even more memory (there are
194 properties that start with -webkit).

No new tests, just refactoring.

* css/CSSParser.cpp:
(WebCore::cssPropertyID):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@128804 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/css/CSSParser.cpp

index 30b3c59..3243f91 100644 (file)
@@ -1,3 +1,23 @@
+2012-09-17  Tony Chang  <tony@chromium.org>
+
+        Make CSS.PrefixUsage histogram smaller to save memory
+        https://bugs.webkit.org/show_bug.cgi?id=96941
+
+        Reviewed by Ojan Vafai.
+
+        Each bucket costs about 12 bytes. This reduces the size of the histogram
+        from 600 to 384, which will save about 2.5k per renderer and browser
+        process.
+
+        In the long run, we could probably generate a table in makeprop.pl that
+        only has the webkit prefix values to save even more memory (there are
+        194 properties that start with -webkit).
+
+        No new tests, just refactoring.
+
+        * css/CSSParser.cpp:
+        (WebCore::cssPropertyID):
+
 2012-09-17  Rob Buis  <rbuis@rim.com>
 
         [BlackBerry] Enable VIDEO_TRACK
index d5e5b7d..efd9bae 100644 (file)
@@ -10418,12 +10418,12 @@ static CSSPropertyID cssPropertyID(const CharacterType* propertyName, unsigned l
     const Property* hashTableEntry = findProperty(name, length);
     const CSSPropertyID propertyID = hashTableEntry ? static_cast<CSSPropertyID>(hashTableEntry->id) : CSSPropertyInvalid;
 
-    // 600 is comfortably larger than numCSSProperties to allow for growth
-    static const int CSSPropertyHistogramSize = 600;
-    COMPILE_ASSERT(CSSPropertyHistogramSize > numCSSProperties, number_of_css_properties_exceed_CSSPropertyHistogramSize);
-
-    if (hasPrefix(buffer, length, "-webkit-") && propertyID != CSSPropertyInvalid)
-        HistogramSupport::histogramEnumeration("CSS.PrefixUsage", max(1, propertyID - firstCSSProperty), CSSPropertyHistogramSize);
+    static const int cssPropertyHistogramSize = numCSSProperties;
+    if (hasPrefix(buffer, length, "-webkit-") && propertyID != CSSPropertyInvalid) {
+        int histogramValue = propertyID - firstCSSProperty;
+        ASSERT(0 <= histogramValue && histogramValue < cssPropertyHistogramSize);
+        HistogramSupport::histogramEnumeration("CSS.PrefixUsage", histogramValue, cssPropertyHistogramSize);
+    }
 
     return propertyID;
 }