Title: [157297] trunk/Source/WebCore
- Revision
- 157297
- Author
- [email protected]
- Date
- 2013-10-11 02:39:28 -0700 (Fri, 11 Oct 2013)
Log Message
Make RenderLayer not arena-allocated.
<https://webkit.org/b/87523>
Reviewed by Antti Koivisto.
Let RenderLayerModelObject store its RenderLayer in a unique_ptr.
Layers are relatively low-volume objects and this looks neutral
on our performance tests.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (157296 => 157297)
--- trunk/Source/WebCore/ChangeLog 2013-10-11 08:35:36 UTC (rev 157296)
+++ trunk/Source/WebCore/ChangeLog 2013-10-11 09:39:28 UTC (rev 157297)
@@ -1,3 +1,14 @@
+2013-10-11 Andreas Kling <[email protected]>
+
+ Make RenderLayer not arena-allocated.
+ <https://webkit.org/b/87523>
+
+ Reviewed by Antti Koivisto.
+
+ Let RenderLayerModelObject store its RenderLayer in a unique_ptr.
+ Layers are relatively low-volume objects and this looks neutral
+ on our performance tests.
+
2013-10-11 Zalan Bujtas <[email protected]>
REGRESSION (r155607): _javascript_ site does not load visually on panerabread.com
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (157296 => 157297)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2013-10-11 08:35:36 UTC (rev 157296)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2013-10-11 09:39:28 UTC (rev 157297)
@@ -1731,25 +1731,6 @@
}
}
-void* RenderLayer::operator new(size_t sz, RenderArena& renderArena)
-{
- return renderArena.allocate(sz);
-}
-
-void RenderLayer::operator delete(void* ptr, size_t sz)
-{
- // Stash size where destroy can find it.
- *(size_t *)ptr = sz;
-}
-
-void RenderLayer::destroy(RenderArena& renderArena)
-{
- delete this;
-
- // Recover the size left there for us by operator delete and free the memory.
- renderArena.free(*(size_t *)this, this);
-}
-
void RenderLayer::addChild(RenderLayer* child, RenderLayer* beforeChild)
{
RenderLayer* prevSibling = beforeChild ? beforeChild->previousSibling() : lastChild();
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (157296 => 157297)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2013-10-11 08:35:36 UTC (rev 157296)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2013-10-11 09:39:28 UTC (rev 157297)
@@ -748,13 +748,6 @@
bool hasBlendMode() const { return false; }
#endif
- // Overloaded new operator. Derived classes must override operator new
- // in order to allocate out of the RenderArena.
- void* operator new(size_t, RenderArena&);
-
- // Overridden to prevent the normal delete from being called.
- void operator delete(void*, size_t);
-
#if USE(ACCELERATED_COMPOSITING)
bool isComposited() const { return m_backing != 0; }
bool hasCompositedMask() const;
@@ -887,9 +880,6 @@
IntSize clampScrollOffset(const IntSize&) const;
- // The normal operator new is disallowed on all render objects.
- void* operator new(size_t) throw();
-
void setNextSibling(RenderLayer* next) { m_next = next; }
void setPreviousSibling(RenderLayer* prev) { m_previous = prev; }
void setParent(RenderLayer* parent);
@@ -1117,9 +1107,6 @@
friend class RenderLayerCompositor;
friend class RenderLayerModelObject;
- // Only safe to call from RenderBoxModelObject::destroyLayer(RenderArena&)
- void destroy(RenderArena&);
-
LayoutUnit overflowTop() const;
LayoutUnit overflowBottom() const;
LayoutUnit overflowLeft() const;
Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp (157296 => 157297)
--- trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp 2013-10-11 08:35:36 UTC (rev 157296)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp 2013-10-11 09:39:28 UTC (rev 157297)
@@ -39,7 +39,6 @@
RenderLayerModelObject::RenderLayerModelObject(Element* element, unsigned baseTypeFlags)
: RenderElement(element, baseTypeFlags | RenderLayerModelObjectFlag)
- , m_layer(0)
{
}
@@ -54,8 +53,7 @@
{
ASSERT(!hasLayer()); // Callers should have already called setHasLayer(false)
ASSERT(m_layer);
- m_layer->destroy(renderArena());
- m_layer = 0;
+ m_layer = nullptr;
}
void RenderLayerModelObject::ensureLayer()
@@ -63,7 +61,7 @@
if (m_layer)
return;
- m_layer = new (renderArena()) RenderLayer(*this);
+ m_layer = std::make_unique<RenderLayer>(*this);
setHasLayer(true);
m_layer->insertOnlyThisLayer();
}
Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.h (157296 => 157297)
--- trunk/Source/WebCore/rendering/RenderLayerModelObject.h 2013-10-11 08:35:36 UTC (rev 157296)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.h 2013-10-11 09:39:28 UTC (rev 157297)
@@ -38,7 +38,7 @@
void destroyLayer();
bool hasSelfPaintingLayer() const;
- RenderLayer* layer() const { return m_layer; }
+ RenderLayer* layer() const { return m_layer.get(); }
virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle) OVERRIDE;
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE;
@@ -56,7 +56,7 @@
virtual void willBeDestroyed() OVERRIDE;
private:
- RenderLayer* m_layer;
+ std::unique_ptr<RenderLayer> m_layer;
// Used to store state between styleWillChange and styleDidChange
static bool s_wasFloating;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes