[Webkit-unassigned] [Bug 156846] RenderStyle should not be reference counted
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sun Apr 24 09:08:32 PDT 2016
https://bugs.webkit.org/show_bug.cgi?id=156846
--- Comment #15 from Darin Adler <darin at apple.com> ---
Comment on attachment 277143
--> https://bugs.webkit.org/attachment.cgi?id=277143
patch
View in context: https://bugs.webkit.org/attachment.cgi?id=277143&action=review
This makes me wonder why these are heap allocated. Maybe at some point should passing RenderStyle&& and moving them instead of using objects on the heap and moving unique_ptrs around. I guess they are kind of big, though.
> Source/WebCore/css/MediaQueryEvaluator.cpp:88
> MediaQueryEvaluator::MediaQueryEvaluator(const String& acceptedMediaType, Frame* frame, RenderStyle* style)
Seems like the argument should be RenderStyle&.
> Source/WebCore/css/MediaQueryEvaluator.cpp:91
> + , m_style(WTFMove(style))
Doesnât make sense since both style and m_style are a raw pointer. I imagine that was different in an earlier point of the development of this patch.
> Source/WebCore/css/StyleResolver.h:135
> struct ElementStyle {
> - ElementStyle(Ref<RenderStyle>&& renderStyle, std::unique_ptr<Style::Relations> relations = { })
> + ElementStyle(std::unique_ptr<RenderStyle> renderStyle, std::unique_ptr<Style::Relations> relations = { })
> : renderStyle(WTFMove(renderStyle))
> , relations(WTFMove(relations))
> { }
>
> - Ref<RenderStyle> renderStyle;
> + std::unique_ptr<RenderStyle> renderStyle;
> std::unique_ptr<Style::Relations> relations;
> };
I suspect this might work better without the constructor, using aggregate syntax to construct this when needed.
> Source/WebCore/dom/Document.cpp:2131
> + std::unique_ptr<RenderStyle> pageStyle(ensureStyleResolver().styleForPage(pageIndex));
Maybe auto instead?
> Source/WebCore/dom/Document.cpp:2137
> + std::unique_ptr<RenderStyle> style = ensureStyleResolver().styleForPage(pageIndex);
Maybe auto instead?
> Source/WebCore/dom/PseudoElement.cpp:125
> + std::unique_ptr<RenderStyle> createdStyle = RenderStyle::createStyleInheritingFromPseudoStyle(renderer.style());
Maybe auto instead?
> Source/WebCore/page/animation/AnimationBase.h:142
> + virtual void getAnimatedStyle(std::unique_ptr<RenderStyle>& /*animatedStyle*/) = 0;
Why doesnât this function use a return value?
> Source/WebCore/rendering/RenderButton.cpp:115
> void RenderButton::setupInnerStyle(RenderStyle* innerStyle)
Clearly this function should take a reference rather than a pointer.
> Source/WebCore/rendering/RenderElement.cpp:1550
> + std::unique_ptr<RenderStyle> result = getUncachedPseudoStyle(PseudoStyleRequest(pseudo), parentStyle);
Maybe auto instead?
> Source/WebCore/rendering/RenderElement.cpp:1588
> + if (std::unique_ptr<RenderStyle> pseudoStyle = selectionPseudoStyle()) {
Maybe auto instead?
> Source/WebCore/rendering/RenderElement.cpp:1633
> + std::unique_ptr<RenderStyle> pseudoStyle = selectionPseudoStyle();
Maybe auto instead?
> Source/WebCore/rendering/RenderLayerCompositor.cpp:519
> + std::unique_ptr<RenderStyle> scrollbarStyle = static_cast<RenderScrollbar*>(scrollbar)->getScrollbarPseudoStyle(ScrollbarBGPart, SCROLLBAR);
Maybe auto instead?
> Source/WebCore/rendering/RenderNamedFlowFragment.cpp:467
> + std::unique_ptr<RenderStyle> objectRegionStyle = RenderStyle::clone(&object->style());
> + std::unique_ptr<RenderStyle> objectOriginalStyle = RenderStyle::clone(objectPair.value.style.get());
Maybe auto instead?
> Source/WebCore/rendering/RenderScrollbar.cpp:146
> + std::unique_ptr<RenderStyle> result = owningRenderer()->getUncachedPseudoStyle(PseudoStyleRequest(pseudoId, this, partType), &owningRenderer()->style());
Maybe auto instead?
> Source/WebCore/rendering/RenderScrollbar.cpp:216
> + std::unique_ptr<RenderStyle> partStyle = getScrollbarPseudoStyle(partType, pseudoForScrollbarPart(partType));
Maybe auto instead?
> Source/WebCore/rendering/style/RenderStyle.h:478
> +#if !ASSERT_DISABLED
> + bool m_deletionHasBegun { false };
> +#endif
Seems like this could be private.
Also, neat that we have this in RefCounted, but do we really need it in RenderStyle?
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160424/b56a1929/attachment.html>
More information about the webkit-unassigned
mailing list