Changeset 139833 in webkit
- Timestamp:
- Jan 15, 2013 9:23:04 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r139829 r139833 1 2013-01-15 Ryosuke Niwa <rniwa@webkit.org> 2 3 NodeRareData doesn't need to have a vtable pointer 4 https://bugs.webkit.org/show_bug.cgi?id=106965 5 6 Reviewed by Benjamin Poulain. 7 8 Made the destructor and reportMemoryUsage of NodeRareDataBase and NodeRareData 9 respectively and their subclasses non-virtual. 10 11 * dom/ElementRareData.cpp: 12 (SameSizeAsElementRareData): Added. 13 (WebCore): Added a compile assertion for the size of ElementRareData. 14 * dom/ElementRareData.h: 15 (ElementRareData): 16 * dom/Node.cpp: 17 (WebCore::Node::clearRareData): Explicitely delete NodeRareData or ElementRareData. 18 (WebCore::Node::reportMemoryUsage): Explicitely add NodeRareData or ElementRareData. 19 * dom/Node.h: 20 (NodeRareDataBase): Deleted the virtual destructor. 21 * dom/NodeRareData.cpp: 22 (SameSizeAsNodeRareData): Removed one pointer. 23 * dom/NodeRareData.h: 24 (NodeRareData): Removed the virtual destructor. 25 (NodeRareData::reportMemoryUsage): Made non-virtual. 26 1 27 2013-01-15 Ian Vollick <vollick@chromium.org> 2 28 -
trunk/Source/WebCore/dom/ElementRareData.cpp
r139192 r139833 37 37 namespace WebCore { 38 38 39 struct SameSizeAsElementRareData : NodeRareData { 40 short indices[2]; 41 unsigned bitfields; 42 LayoutSize sizeForResizing; 43 IntSize scrollOffset; 44 void* pointers[7]; 45 }; 46 47 COMPILE_ASSERT(sizeof(ElementRareData) == sizeof(SameSizeAsElementRareData), ElementRareDataShouldStaySmall); 48 39 49 void ElementRareData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 40 50 { -
trunk/Source/WebCore/dom/ElementRareData.h
r139681 r139833 37 37 public: 38 38 ElementRareData(); 39 virtual~ElementRareData();39 ~ElementRareData(); 40 40 41 41 void setPseudoElement(PseudoId, PassRefPtr<PseudoElement>); … … 95 95 void setChildIndex(unsigned index) { m_childIndex = index; } 96 96 97 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE; 97 // Manually called by Node::reportMemoryUsage. 98 void reportMemoryUsage(MemoryObjectInfo*) const; 98 99 99 100 ElementShadow* shadow() const { return m_shadow.get(); } … … 161 162 162 163 LayoutSize m_minimumSizeForResizing; 164 IntSize m_savedLayerScrollOffset; 163 165 RefPtr<RenderStyle> m_computedStyle; 164 166 … … 171 173 RefPtr<PseudoElement> m_generatedAfter; 172 174 173 IntSize m_savedLayerScrollOffset;174 175 private:176 175 void releasePseudoElement(PseudoElement*); 177 176 }; -
trunk/Source/WebCore/dom/Node.cpp
r139806 r139833 472 472 473 473 RenderObject* renderer = m_data.m_rareData->renderer(); 474 delete m_data.m_rareData; 474 if (isElementNode()) 475 delete static_cast<ElementRareData*>(m_data.m_rareData); 476 else 477 delete m_data.m_rareData; 475 478 m_data.m_renderer = renderer; 476 479 clearFlag(HasRareDataFlag); … … 2582 2585 info.addMember(m_previous); 2583 2586 info.addMember(this->renderer()); 2584 if (hasRareData()) 2585 info.addMember(rareData()); 2587 if (hasRareData()) { 2588 if (isElementNode()) 2589 info.addMember(static_cast<ElementRareData*>(rareData())); 2590 else 2591 info.addMember(rareData()); 2592 } 2586 2593 } 2587 2594 -
trunk/Source/WebCore/dom/Node.h
r139751 r139833 116 116 void setRenderer(RenderObject* renderer) { m_renderer = renderer; } 117 117 118 virtual ~NodeRareDataBase() { }119 118 protected: 120 119 NodeRareDataBase() { } 120 121 121 private: 122 122 RenderObject* m_renderer; -
trunk/Source/WebCore/dom/NodeRareData.cpp
r139681 r139833 40 40 41 41 struct SameSizeAsNodeRareData { 42 void* m_pointer[ 4];42 void* m_pointer[3]; 43 43 #if ENABLE(MICRODATA) 44 44 void* m_microData; -
trunk/Source/WebCore/dom/NodeRareData.h
r139690 r139833 281 281 { } 282 282 283 virtual ~NodeRareData()284 { }285 286 283 void clearNodeLists() { m_nodeLists.clear(); } 287 284 NodeListsNodeData* nodeLists() const { return m_nodeLists.get(); } … … 310 307 #endif 311 308 312 virtual void reportMemoryUsage(MemoryObjectInfo*) const; 309 // This member function is intentionially not virtual to avoid adding a vtable pointer. 310 void reportMemoryUsage(MemoryObjectInfo*) const; 313 311 314 312 private:
Note: See TracChangeset
for help on using the changeset viewer.