Changeset 157306 in webkit
- Timestamp:
- Oct 11, 2013 9:54:27 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r157302 r157306 1 2013-10-11 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r157297. 4 http://trac.webkit.org/changeset/157297 5 https://bugs.webkit.org/show_bug.cgi?id=122651 6 7 Caused crashes on multiple platform/mac-wk2/tiled-drawing 8 tests (Requested by ap on #webkit). 9 10 * rendering/RenderLayer.cpp: 11 (WebCore::RenderLayer::operator new): 12 (WebCore::RenderLayer::operator delete): 13 (WebCore::RenderLayer::destroy): 14 * rendering/RenderLayer.h: 15 * rendering/RenderLayerModelObject.cpp: 16 (WebCore::RenderLayerModelObject::RenderLayerModelObject): 17 (WebCore::RenderLayerModelObject::destroyLayer): 18 (WebCore::RenderLayerModelObject::ensureLayer): 19 * rendering/RenderLayerModelObject.h: 20 (WebCore::RenderLayerModelObject::layer): 21 1 22 2013-10-11 Darin Adler <darin@apple.com> 2 23 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r157297 r157306 1732 1732 } 1733 1733 1734 void* RenderLayer::operator new(size_t sz, RenderArena& renderArena) 1735 { 1736 return renderArena.allocate(sz); 1737 } 1738 1739 void RenderLayer::operator delete(void* ptr, size_t sz) 1740 { 1741 // Stash size where destroy can find it. 1742 *(size_t *)ptr = sz; 1743 } 1744 1745 void RenderLayer::destroy(RenderArena& renderArena) 1746 { 1747 delete this; 1748 1749 // Recover the size left there for us by operator delete and free the memory. 1750 renderArena.free(*(size_t *)this, this); 1751 } 1752 1734 1753 void RenderLayer::addChild(RenderLayer* child, RenderLayer* beforeChild) 1735 1754 { -
trunk/Source/WebCore/rendering/RenderLayer.h
r157297 r157306 749 749 #endif 750 750 751 // Overloaded new operator. Derived classes must override operator new 752 // in order to allocate out of the RenderArena. 753 void* operator new(size_t, RenderArena&); 754 755 // Overridden to prevent the normal delete from being called. 756 void operator delete(void*, size_t); 757 751 758 #if USE(ACCELERATED_COMPOSITING) 752 759 bool isComposited() const { return m_backing != 0; } … … 880 887 881 888 IntSize clampScrollOffset(const IntSize&) const; 889 890 // The normal operator new is disallowed on all render objects. 891 void* operator new(size_t) throw(); 882 892 883 893 void setNextSibling(RenderLayer* next) { m_next = next; } … … 1108 1118 friend class RenderLayerModelObject; 1109 1119 1120 // Only safe to call from RenderBoxModelObject::destroyLayer(RenderArena&) 1121 void destroy(RenderArena&); 1122 1110 1123 LayoutUnit overflowTop() const; 1111 1124 LayoutUnit overflowBottom() const; -
trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp
r157297 r157306 40 40 RenderLayerModelObject::RenderLayerModelObject(Element* element, unsigned baseTypeFlags) 41 41 : RenderElement(element, baseTypeFlags | RenderLayerModelObjectFlag) 42 , m_layer(0) 42 43 { 43 44 } … … 54 55 ASSERT(!hasLayer()); // Callers should have already called setHasLayer(false) 55 56 ASSERT(m_layer); 56 m_layer = nullptr; 57 m_layer->destroy(renderArena()); 58 m_layer = 0; 57 59 } 58 60 … … 62 64 return; 63 65 64 m_layer = std::make_unique<RenderLayer>(*this);66 m_layer = new (renderArena()) RenderLayer(*this); 65 67 setHasLayer(true); 66 68 m_layer->insertOnlyThisLayer(); -
trunk/Source/WebCore/rendering/RenderLayerModelObject.h
r157297 r157306 39 39 40 40 bool hasSelfPaintingLayer() const; 41 RenderLayer* layer() const { return m_layer .get(); }41 RenderLayer* layer() const { return m_layer; } 42 42 43 43 virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle) OVERRIDE; … … 57 57 58 58 private: 59 std::unique_ptr<RenderLayer>m_layer;59 RenderLayer* m_layer; 60 60 61 61 // Used to store state between styleWillChange and styleDidChange
Note: See TracChangeset
for help on using the changeset viewer.