Shrink HTMLCollection.
authorandreas.kling@nokia.com <andreas.kling@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Nov 2011 18:14:09 +0000 (18:14 +0000)
committerandreas.kling@nokia.com <andreas.kling@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Nov 2011 18:14:09 +0000 (18:14 +0000)
<http://webkit.org/b/71928>

Reviewed by Darin Adler.

Rearrange the members of HTMLCollection, effectively shrinking
it by 16 bytes on 64-bit. This reduces memory consumption
by 531 kB when loading the full HTML5 spec.

On 32-bit it shrinks by 8 bytes, saving 265 kB.

* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::HTMLCollection):
* html/HTMLCollection.h:
(WebCore::HTMLCollection::type):

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

Source/WebCore/ChangeLog
Source/WebCore/html/HTMLCollection.cpp
Source/WebCore/html/HTMLCollection.h

index ccf3094..d11856f 100755 (executable)
@@ -1,3 +1,21 @@
+2011-11-09  Andreas Kling  <kling@webkit.org>
+
+        Shrink HTMLCollection.
+        <http://webkit.org/b/71928>
+
+        Reviewed by Darin Adler.
+
+        Rearrange the members of HTMLCollection, effectively shrinking
+        it by 16 bytes on 64-bit. This reduces memory consumption
+        by 531 kB when loading the full HTML5 spec.
+
+        On 32-bit it shrinks by 8 bytes, saving 265 kB.
+
+        * html/HTMLCollection.cpp:
+        (WebCore::HTMLCollection::HTMLCollection):
+        * html/HTMLCollection.h:
+        (WebCore::HTMLCollection::type):
+
 2011-11-09  Kentaro Hara  <haraken@chromium.org>
 
         Remove redundant [CanBeConstructed] IDLs
index 72ebf55..163c6a1 100644 (file)
@@ -38,19 +38,19 @@ using namespace HTMLNames;
 
 HTMLCollection::HTMLCollection(PassRefPtr<Node> base, CollectionType type)
     : m_idsDone(false)
-    , m_base(base)
+    , m_ownsInfo(false)
     , m_type(type)
+    , m_base(base)
     , m_info(m_base->isDocumentNode() ? static_cast<Document*>(m_base.get())->collectionInfo(type) : 0)
-    , m_ownsInfo(false)
 {
 }
 
 HTMLCollection::HTMLCollection(PassRefPtr<Node> base, CollectionType type, CollectionCache* info)
     : m_idsDone(false)
-    , m_base(base)
+    , m_ownsInfo(false)
     , m_type(type)
+    , m_base(base)
     , m_info(info)
-    , m_ownsInfo(false)
 {
 }
 
index 4359724..f3f855e 100644 (file)
@@ -57,7 +57,7 @@ public:
     PassRefPtr<NodeList> tags(const String&);
 
     Node* base() const { return m_base.get(); }
-    CollectionType type() const { return m_type; }
+    CollectionType type() const { return static_cast<CollectionType>(m_type); }
 
 protected:
     HTMLCollection(PassRefPtr<Node> base, CollectionType, CollectionCache*);
@@ -66,7 +66,7 @@ protected:
     CollectionCache* info() const { return m_info; }
     void resetCollectionInfo() const;
 
-    mutable bool m_idsDone; // for nextNamedItem()
+    mutable bool m_idsDone : 1; // for nextNamedItem()
 
 private:
     virtual Element* itemAfter(Element*) const;
@@ -74,12 +74,12 @@ private:
     virtual void updateNameCache() const;
 
     bool checkForNameMatch(Element*, bool checkName, const AtomicString& name) const;
+    mutable bool m_ownsInfo : 1;
+    unsigned m_type : 5; // CollectionType
 
     RefPtr<Node> m_base;
-    CollectionType m_type;
 
     mutable CollectionCache* m_info;
-    mutable bool m_ownsInfo;
 };
 
 } // namespace