[Webkit-unassigned] [Bug 187430] Optimize packing of RootInlineBox

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Jul 6 21:54:11 PDT 2018


https://bugs.webkit.org/show_bug.cgi?id=187430

--- Comment #2 from Simon Fraser (smfr) <simon.fraser at apple.com> ---
Before:

 29$ $ ./Tools/Scripts/dump-class-layout -c Release WebCore RootInlineBox
  +0 <176> RootInlineBox
  +0 <112>     WebCore::InlineFlowBox WebCore::InlineFlowBox
  +0 < 64>         WebCore::InlineBox WebCore::InlineBox
  +0 <  8>            __vtbl_ptr_type * _vptr
  +8 <  8>           WebCore::InlineBox * m_next
 +16 <  8>           WebCore::InlineBox * m_prev
 +24 <  8>           WebCore::InlineFlowBox * m_parent
 +32 <  8>           WebCore::RenderObject & m_renderer
 +40 <  4>           float m_expansion
 +44 <  4>             WebCore::InlineBox::InlineBoxBitfields m_bitfields
 +44 <  4>               unsigned int m_firstLine : 1
 +44 <  4>               unsigned int m_constructed : 1
 +44 <  4>               unsigned int m_bidiEmbeddingLevel : 6
 +45 <  4>               unsigned int m_dirty : 1
 +45 <  4>               unsigned int m_extracted : 1
 +45 <  4>               unsigned int m_hasVirtualLogicalHeight : 1
 +45 <  4>               unsigned int m_isHorizontal : 1
 +45 <  4>               unsigned int m_endsWithBreak : 1
 +45 <  4>               unsigned int m_hasSelectedChildrenOrCanHaveLeadingExpansion : 1
 +45 <  4>               unsigned int m_canHaveTrailingExpansion : 1
 +45 <  4>               unsigned int m_knownToHaveNoOverflow : 1
 +46 <  4>               unsigned int m_hasEllipsisBoxOrHyphen : 1
 +46 <  4>               unsigned int m_dirOverride : 1
 +46 <  4>               unsigned int m_behavesLikeText : 1
 +46 <  4>               unsigned int m_forceTrailingExpansion : 1
 +46 <  4>               unsigned int m_forceLeadingExpansion : 1
 +46 <  4>               unsigned int m_determinedIfNextOnLineExists : 1
 +46 <  4>               unsigned int m_nextOnLineExists : 1
 +48 <  8>             WebCore::FloatPoint m_topLeft
 +48 <  4>               float m_x
 +52 <  4>               float m_y
 +56 <  4>           float m_logicalWidth
 +60 <  4>       <PADDING: 4 bytes>
 +64 <  8>         WTF::RefPtr<WebCore::RenderOverflow, WTF::DumbPtrTraits<WebCore::RenderOverflow> > m_overflow
 +64 <  8>           WTF::DumbPtrTraits<WebCore::RenderOverflow>::StorageType m_ptr
 +72 <  8>       WebCore::InlineBox * m_firstChild
 +80 <  8>       WebCore::InlineBox * m_lastChild
 +88 <  8>       WebCore::InlineFlowBox * m_prevLineBox
 +96 <  8>       WebCore::InlineFlowBox * m_nextLineBox
+104 <  4>       unsigned int m_includeLogicalLeftEdge : 1
+104 <  4>       unsigned int m_includeLogicalRightEdge : 1
+104 <  4>       unsigned int m_hasTextChildren : 1
+104 <  4>       unsigned int m_hasTextDescendants : 1
+104 <  4>       unsigned int m_descendantsHaveSameLineHeightAndBaseline : 1
+104 <  4>       unsigned int m_baselineType : 1
+104 <  4>       unsigned int m_hasAnnotationsBefore : 1
+104 <  4>       unsigned int m_hasAnnotationsAfter : 1
+105 <  4>       unsigned int m_lineBreakBidiStatusEor : 5
+105 <  4>       unsigned int m_lineBreakBidiStatusLastStrong : 5
+106 <  4>       unsigned int m_lineBreakBidiStatusLast : 5
+106 <  4>       unsigned int m_isFirstAfterPageBreak : 1
+110 <  2>   <PADDING: 2 bytes>
+112 <  8>     WTF::CanMakeWeakPtr<WebCore::RootInlineBox> WTF::CanMakeWeakPtr<WebCore::RootInlineBox>
+112 <  8>         WTF::WeakPtrFactory<WebCore::RootInlineBox> m_weakFactory
+112 <  8>             WTF::RefPtr<WTF::WeakReference<WebCore::RootInlineBox>, WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RootInlineBox> > > m_ref
+112 <  8>               WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RootInlineBox> >::StorageType m_ptr
+120 <  4>   unsigned int m_lineBreakPos
+124 <  4>   <PADDING: 4 bytes>
+128 <  8>     WTF::WeakPtr<WebCore::RenderObject> m_lineBreakObj
+128 <  8>         WTF::RefPtr<WTF::WeakReference<WebCore::RenderObject>, WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RenderObject> > > m_ref
+128 <  8>           WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RenderObject> >::StorageType m_ptr
+136 <  8>     WTF::RefPtr<WebCore::BidiContext, WTF::DumbPtrTraits<WebCore::BidiContext> > m_lineBreakContext
+136 <  8>       WTF::DumbPtrTraits<WebCore::BidiContext>::StorageType m_ptr
+144 <  4>     WebCore::LayoutUnit m_lineTop
+144 <  4>       int m_value
+148 <  4>     WebCore::LayoutUnit m_lineBottom
+148 <  4>       int m_value
+152 <  4>     WebCore::LayoutUnit m_lineTopWithLeading
+152 <  4>       int m_value
+156 <  4>     WebCore::LayoutUnit m_lineBottomWithLeading
+156 <  4>       int m_value
+160 <  4>     WebCore::LayoutUnit m_paginationStrut
+160 <  4>       int m_value
+164 <  4>     WebCore::LayoutUnit m_paginatedLineWidth
+164 <  4>       int m_value
+168 <  8>     std::__1::unique_ptr<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16>, std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > > m_floats
+168 <  8>         std::__1::__compressed_pair<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > > __ptr_
+168 <  8>             std::__1::__compressed_pair_elem<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, 0, false> std::__1::__compressed_pair_elem<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, 0, false>
+168 <  8>               WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> * __value_
+168 <  1>             std::__1::__compressed_pair_elem<std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >, 1, true>
+168 <  1>                 std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >
Total byte size: 176
Total pad bytes: 10
Padding percentage: 5.68 %


After:

 32$ $ ./Tools/Scripts/dump-class-layout -c Release WebCore RootInlineBox
  +0 <168> RootInlineBox
  +0 <104>     WebCore::InlineFlowBox WebCore::InlineFlowBox
  +0 < 64>         WebCore::InlineBox WebCore::InlineBox
  +0 <  8>            __vtbl_ptr_type * _vptr
  +8 <  8>           WebCore::InlineBox * m_next
 +16 <  8>           WebCore::InlineBox * m_prev
 +24 <  8>           WebCore::InlineFlowBox * m_parent
 +32 <  8>           WebCore::RenderObject & m_renderer
 +40 <  4>           float m_logicalWidth
 +44 <  4>           float m_expansion
 +48 <  4>             WebCore::InlineBox::InlineBoxBitfields m_bitfields
 +48 <  4>               unsigned int m_firstLine : 1
 +48 <  4>               unsigned int m_constructed : 1
 +48 <  4>               unsigned int m_bidiEmbeddingLevel : 6
 +49 <  4>               unsigned int m_dirty : 1
 +49 <  4>               unsigned int m_extracted : 1
 +49 <  4>               unsigned int m_hasVirtualLogicalHeight : 1
 +49 <  4>               unsigned int m_isHorizontal : 1
 +49 <  4>               unsigned int m_endsWithBreak : 1
 +49 <  4>               unsigned int m_hasSelectedChildrenOrCanHaveLeadingExpansion : 1
 +49 <  4>               unsigned int m_canHaveTrailingExpansion : 1
 +49 <  4>               unsigned int m_knownToHaveNoOverflow : 1
 +50 <  4>               unsigned int m_hasEllipsisBoxOrHyphen : 1
 +50 <  4>               unsigned int m_dirOverride : 1
 +50 <  4>               unsigned int m_behavesLikeText : 1
 +50 <  4>               unsigned int m_forceTrailingExpansion : 1
 +50 <  4>               unsigned int m_forceLeadingExpansion : 1
 +50 <  4>               unsigned int m_determinedIfNextOnLineExists : 1
 +50 <  4>               unsigned int m_nextOnLineExists : 1
 +52 <  8>             WebCore::FloatPoint m_topLeft
 +52 <  4>               float m_x
 +56 <  4>               float m_y
 +60 <  4>       unsigned int m_includeLogicalLeftEdge : 1
 +60 <  4>       unsigned int m_includeLogicalRightEdge : 1
 +60 <  4>       unsigned int m_hasTextChildren : 1
 +60 <  4>       unsigned int m_hasTextDescendants : 1
 +60 <  4>       unsigned int m_descendantsHaveSameLineHeightAndBaseline : 1
 +60 <  4>       unsigned int m_baselineType : 1
 +60 <  4>       unsigned int m_hasAnnotationsBefore : 1
 +60 <  4>       unsigned int m_hasAnnotationsAfter : 1
 +61 <  4>       unsigned int m_lineBreakBidiStatusEor : 5
 +61 <  4>       unsigned int m_lineBreakBidiStatusLastStrong : 5
 +62 <  4>       unsigned int m_lineBreakBidiStatusLast : 5
 +62 <  4>       unsigned int m_isFirstAfterPageBreak : 1
 +64 <  8>         WTF::RefPtr<WebCore::RenderOverflow, WTF::DumbPtrTraits<WebCore::RenderOverflow> > m_overflow
 +64 <  8>           WTF::DumbPtrTraits<WebCore::RenderOverflow>::StorageType m_ptr
 +72 <  8>       WebCore::InlineBox * m_firstChild
 +80 <  8>       WebCore::InlineBox * m_lastChild
 +88 <  8>       WebCore::InlineFlowBox * m_prevLineBox
 +96 <  8>       WebCore::InlineFlowBox * m_nextLineBox
+104 <  8>     WTF::CanMakeWeakPtr<WebCore::RootInlineBox> WTF::CanMakeWeakPtr<WebCore::RootInlineBox>
+104 <  8>         WTF::WeakPtrFactory<WebCore::RootInlineBox> m_weakFactory
+104 <  8>             WTF::RefPtr<WTF::WeakReference<WebCore::RootInlineBox>, WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RootInlineBox> > > m_ref
+104 <  8>               WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RootInlineBox> >::StorageType m_ptr
+112 <  8>     WTF::WeakPtr<WebCore::RenderObject> m_lineBreakObj
+112 <  8>         WTF::RefPtr<WTF::WeakReference<WebCore::RenderObject>, WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RenderObject> > > m_ref
+112 <  8>           WTF::DumbPtrTraits<WTF::WeakReference<WebCore::RenderObject> >::StorageType m_ptr
+120 <  8>     WTF::RefPtr<WebCore::BidiContext, WTF::DumbPtrTraits<WebCore::BidiContext> > m_lineBreakContext
+120 <  8>       WTF::DumbPtrTraits<WebCore::BidiContext>::StorageType m_ptr
+128 <  4>     WebCore::LayoutUnit m_lineTop
+128 <  4>       int m_value
+132 <  4>     WebCore::LayoutUnit m_lineBottom
+132 <  4>       int m_value
+136 <  4>     WebCore::LayoutUnit m_lineTopWithLeading
+136 <  4>       int m_value
+140 <  4>     WebCore::LayoutUnit m_lineBottomWithLeading
+140 <  4>       int m_value
+144 <  4>     WebCore::LayoutUnit m_paginationStrut
+144 <  4>       int m_value
+148 <  4>     WebCore::LayoutUnit m_paginatedLineWidth
+148 <  4>       int m_value
+152 <  8>     std::__1::unique_ptr<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16>, std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > > m_floats
+152 <  8>         std::__1::__compressed_pair<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > > __ptr_
+152 <  8>             std::__1::__compressed_pair_elem<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, 0, false> std::__1::__compressed_pair_elem<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> *, 0, false>
+152 <  8>               WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> * __value_
+152 <  1>             std::__1::__compressed_pair_elem<std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >, 1, true> std::__1::__compressed_pair_elem<std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >, 1, true>
+152 <  1>                 std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> > std::__1::default_delete<WTF::Vector<WTF::WeakPtr<WebCore::RenderBox>, 0, WTF::CrashOnOverflow, 16> >
+160 <  4>   unsigned int m_lineBreakPos
+164 <  4>   <PADDING: 4 bytes>
Total byte size: 168
Total pad bytes: 4
Padding percentage: 2.38 %

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180707/29ac2396/attachment-0001.html>


More information about the webkit-unassigned mailing list