Shrink the CSSPropertyID enum type
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Mar 2015 09:21:20 +0000 (09:21 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Mar 2015 09:21:20 +0000 (09:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=142456

Reviewed by Sam Weinig.

Specify uint16_t as the base type for the CSSPropertyID enum.
This is enough to cover all of the CSS properties (429 at this moment,
with static_assert covering future changes). It halves the enum type size,
from 4 bytes to 2, reducing the size of various CSSPropertyID containers.

No new tests -- no change in behavior.

* css/CSSPrimitiveValue.cpp:
(WebCore::propertyName): Remove the unnecessary propertyID < 0 check.
* css/makeprop.pl:

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

Source/WebCore/ChangeLog
Source/WebCore/css/CSSPrimitiveValue.cpp
Source/WebCore/css/makeprop.pl

index ecdb529..74b8e9f 100644 (file)
@@ -1,3 +1,21 @@
+2015-03-10  Zan Dobersek  <zdobersek@igalia.com>
+
+        Shrink the CSSPropertyID enum type
+        https://bugs.webkit.org/show_bug.cgi?id=142456
+
+        Reviewed by Sam Weinig.
+
+        Specify uint16_t as the base type for the CSSPropertyID enum.
+        This is enough to cover all of the CSS properties (429 at this moment,
+        with static_assert covering future changes). It halves the enum type size,
+        from 4 bytes to 2, reducing the size of various CSSPropertyID containers.
+
+        No new tests -- no change in behavior.
+
+        * css/CSSPrimitiveValue.cpp:
+        (WebCore::propertyName): Remove the unnecessary propertyID < 0 check.
+        * css/makeprop.pl:
+
 2015-03-10  Dan Bernstein  <mitz@apple.com>
 
         WebCore part of <rdar://problem/20086546> [Cocoa] Add an option to treat certificate chains with SHA1-signed certificates as insecure
index 0b344ad..4cfed54 100644 (file)
@@ -220,9 +220,6 @@ static const AtomicString& propertyName(CSSPropertyID propertyID)
     ASSERT_ARG(propertyID, propertyID >= 0);
     ASSERT_ARG(propertyID, (propertyID >= firstCSSProperty && propertyID < firstCSSProperty + numCSSProperties));
 
-    if (propertyID < 0)
-        return nullAtom;
-
     return getPropertyNameAtomicString(propertyID);
 }
 
index e2e8bbf..63d5875 100755 (executable)
@@ -132,6 +132,11 @@ print GPERF << "EOF";
 #endif
 
 namespace WebCore {
+
+// Using std::numeric_limits<uint16_t>::max() here would be cleaner,
+// but is not possible due to missing constexpr support in MSVC 2013.
+static_assert(numCSSProperties + 1 <= 65535, "CSSPropertyID should fit into uint16_t.");
+
 EOF
 
 print GPERF "const char* const propertyNameStrings[numCSSProperties] = {\n";
@@ -276,7 +281,7 @@ class String;
 
 namespace WebCore {
 
-enum CSSPropertyID {
+enum CSSPropertyID : uint16_t {
     CSSPropertyInvalid = 0,
 EOF