Show
Ignore:
Timestamp:
04/02/07 18:01:09 (22 months ago)
Author:
antti
Message:

Reviewed by Hyatt.

Render tree memory savings, part 3


These changes shrink all RenderBlocks by additional 28 bytes. Together with parts 1 and 2
RenderBlock goes from 172 bytes to 128 bytes, a saving of 26%.


  • Pack bitfields together in RenderFlow
  • Move top/bottom min/max margin values to a struct that is only allocated in case these variables have non default values. Usually this is <5% of all blocks.
  • Move rarely used column variables to hash
  • rendering/RenderBlock.cpp: (WebCore::ColumnInfo::ColumnInfo): (WebCore::RenderBlock::RenderBlock): (WebCore::RenderBlock::~RenderBlock): (WebCore::RenderBlock::layoutBlock): (WebCore::RenderBlock::collapseMargins): (WebCore::RenderBlock::clearFloatsIfNeeded): (WebCore::RenderBlock::setCollapsedBottomMargin): (WebCore::RenderBlock::layoutBlockChildren): (WebCore::RenderBlock::paintColumns): (WebCore::RenderBlock::paintObject): (WebCore::RenderBlock::fillSelectionGaps): (WebCore::RenderBlock::lowestPosition): (WebCore::RenderBlock::rightmostPosition): (WebCore::RenderBlock::leftmostPosition): (WebCore::RenderBlock::nodeAtPoint): (WebCore::RenderBlock::hitTestColumns): (WebCore::RenderBlock::positionForCoordinates): (WebCore::RenderBlock::availableWidth): (WebCore::RenderBlock::calcColumnWidth): (WebCore::RenderBlock::setDesiredColumnCountAndWidth): (WebCore::RenderBlock::desiredColumnWidth): (WebCore::RenderBlock::desiredColumnCount): (WebCore::RenderBlock::columnRects): (WebCore::RenderBlock::layoutColumns): (WebCore::RenderBlock::adjustPointToColumnContents): (WebCore::RenderBlock::adjustRectForColumns): (WebCore::RenderBlock::setMaxTopMargins): (WebCore::RenderBlock::setMaxBottomMargins):
  • rendering/RenderBlock.h: (WebCore::RenderBlock::maxTopMargin): (WebCore::RenderBlock::maxBottomMargin): (WebCore::RenderBlock::maxTopPosMargin): (WebCore::RenderBlock::maxTopNegMargin): (WebCore::RenderBlock::maxBottomPosMargin): (WebCore::RenderBlock::maxBottomNegMargin): (WebCore::RenderBlock::initMaxMarginValues): (WebCore::RenderBlock::MaxMargin::MaxMargin): (WebCore::RenderBlock::MaxMargin::topPosDefault): (WebCore::RenderBlock::MaxMargin::topNegDefault): (WebCore::RenderBlock::MaxMargin::bottomPosDefault): (WebCore::RenderBlock::MaxMargin::bottomNegDefault):
  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::layoutBlock):
  • rendering/RenderFlow.h: (WebCore::RenderFlow::RenderFlow): (WebCore::RenderFlow::hasColumns):
  • rendering/RenderInline.cpp: (WebCore::RenderInline::RenderInline):
  • rendering/RenderInline.h:
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/rendering/RenderFlow.h

    r19997 r20673  
    4747        , m_lastLineBox(0) 
    4848        , m_lineHeight(-1) 
     49        , m_childrenInline(true) 
     50        , m_firstLine(false) 
     51        , m_clearStatus(CNONE) 
     52        , m_topMarginQuirk(false)  
     53        , m_bottomMarginQuirk(false) 
     54        , m_hasMarkupTruncation(false) 
     55        , m_selectionState(SelectionNone) 
     56        , m_hasColumns(false) 
     57        , m_isContinuation(false) 
    4958    { 
    5059    } 
     
    91100    void paintOutline(GraphicsContext*, int tx, int ty); 
    92101 
    93     virtual bool hasColumns() const { return false; } 
     102    virtual bool hasColumns() const { return m_hasColumns; } 
    94103 
    95104private: 
     
    108117 
    109118    mutable short m_lineHeight; 
     119     
     120    // These bitfields are moved here from subclasses to pack them together 
     121    // from RenderBlock 
     122    bool m_childrenInline : 1; 
     123    bool m_firstLine : 1; 
     124    unsigned m_clearStatus  : 2; // EClear 
     125    bool m_topMarginQuirk : 1; 
     126    bool m_bottomMarginQuirk : 1; 
     127    bool m_hasMarkupTruncation : 1; 
     128    unsigned m_selectionState : 3; // SelectionState 
     129    bool m_hasColumns : 1; 
     130     
     131    // from RenderInline 
     132    bool m_isContinuation : 1; // Whether or not we're a continuation of an inline. 
    110133}; 
    111134