Changeset 156738 in webkit
- Timestamp:
- Oct 1, 2013 3:29:34 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r156733 r156738 1 2013-10-01 Antti Koivisto <antti@apple.com> 2 3 Make tests for renderer base types non-virtual 4 https://bugs.webkit.org/show_bug.cgi?id=122185 5 6 Reviewed by Dave Hyatt. 7 8 Make isRenderFoo() functions for commonly tested base types use bit flags instead of virtual calls. 9 This is faster and we have space in RenderElement. 10 11 These bits are not mutully exclusive. For testing leaf types we can add an enum. 12 1 13 2013-10-01 Ryosuke Niwa <rniwa@webkit.org> 2 14 -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r156613 r156738 150 150 // ------------------------------------------------------------------------------------------------------- 151 151 152 RenderBlock::RenderBlock(Element* element )153 : RenderBox(element )152 RenderBlock::RenderBlock(Element* element, unsigned baseTypeFlags) 153 : RenderBox(element, baseTypeFlags | RenderBlockFlag) 154 154 , m_lineHeight(-1) 155 155 , m_hasMarginBeforeQuirk(false) -
trunk/Source/WebCore/rendering/RenderBlock.h
r156639 r156738 99 99 100 100 protected: 101 explicit RenderBlock(Element* );101 explicit RenderBlock(Element*, unsigned baseTypeFlags); 102 102 virtual ~RenderBlock(); 103 103 … … 553 553 virtual const char* renderName() const OVERRIDE; 554 554 555 virtual bool isRenderBlock() const OVERRIDE FINAL { return true; }556 555 virtual bool isInlineBlockOrInlineTable() const OVERRIDE FINAL { return isInline() && isReplaced(); } 557 556 virtual bool canHaveChildren() const OVERRIDE { return true; } -
trunk/Source/WebCore/rendering/RenderBlockFlow.cpp
r156557 r156738 77 77 78 78 RenderBlockFlow::RenderBlockFlow(Element* element) 79 : RenderBlock(element )79 : RenderBlock(element, RenderBlockFlowFlag) 80 80 { 81 81 COMPILE_ASSERT(sizeof(RenderBlockFlow::MarginInfo) == sizeof(SameSizeAsMarginInfo), MarginInfo_should_stay_small); -
trunk/Source/WebCore/rendering/RenderBlockFlow.h
r156639 r156738 32 32 explicit RenderBlockFlow(Element*); 33 33 virtual ~RenderBlockFlow(); 34 35 virtual bool isRenderBlockFlow() const OVERRIDE FINAL { return true; } 36 34 37 35 virtual void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) OVERRIDE; 38 36 -
trunk/Source/WebCore/rendering/RenderBox.cpp
r156622 r156738 96 96 } 97 97 98 RenderBox::RenderBox(Element* element )99 : RenderBoxModelObject(element )98 RenderBox::RenderBox(Element* element, unsigned baseTypeFlags) 99 : RenderBoxModelObject(element, baseTypeFlags) 100 100 , m_minPreferredLogicalWidth(-1) 101 101 , m_maxPreferredLogicalWidth(-1) -
trunk/Source/WebCore/rendering/RenderBox.h
r156622 r156738 45 45 class RenderBox : public RenderBoxModelObject { 46 46 public: 47 explicit RenderBox(Element* );47 explicit RenderBox(Element*, unsigned baseTypeFlags); 48 48 virtual ~RenderBox(); 49 49 -
trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp
r156622 r156738 160 160 } 161 161 162 RenderBoxModelObject::RenderBoxModelObject(Element* element )163 : RenderLayerModelObject(element )162 RenderBoxModelObject::RenderBoxModelObject(Element* element, unsigned baseTypeFlags) 163 : RenderLayerModelObject(element, baseTypeFlags | RenderBoxModelObjectFlag) 164 164 { 165 165 } -
trunk/Source/WebCore/rendering/RenderBoxModelObject.h
r156622 r156738 62 62 class RenderBoxModelObject : public RenderLayerModelObject { 63 63 public: 64 explicit RenderBoxModelObject(Element* );64 explicit RenderBoxModelObject(Element*, unsigned baseTypeFlags); 65 65 virtual ~RenderBoxModelObject(); 66 66 … … 310 310 private: 311 311 LayoutUnit computedCSSPadding(Length) const; 312 virtual bool isBoxModelObject() const OVERRIDE FINAL { return true; }313 312 314 313 virtual LayoutRect frameRectForStickyPositioning() const = 0; -
trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp
r156613 r156738 122 122 123 123 RenderDeprecatedFlexibleBox::RenderDeprecatedFlexibleBox(Element& element) 124 : RenderBlock(&element )124 : RenderBlock(&element, 0) 125 125 { 126 126 setChildrenInline(false); // All of our children must be block-level -
trunk/Source/WebCore/rendering/RenderElement.cpp
r156639 r156738 65 65 bool RenderElement::s_noLongerAffectsParentBlock = false; 66 66 67 RenderElement::RenderElement(Element* element )67 RenderElement::RenderElement(Element* element, unsigned baseTypeFlags) 68 68 : RenderObject(element) 69 , m_baseTypeFlags(baseTypeFlags) 69 70 , m_ancestorLineBoxDirty(false) 70 71 , m_firstChild(nullptr) … … 274 275 // style changing, since it depends on whether we decide to composite these elements. When the 275 276 // layer status of one of these elements changes, we need to force a layout. 276 if (diff == StyleDifferenceEqual && style() && is LayerModelObject()) {277 if (diff == StyleDifferenceEqual && style() && isRenderLayerModelObject()) { 277 278 if (hasLayer() != toRenderLayerModelObject(this)->requiresLayer()) 278 279 diff = StyleDifferenceLayout; -
trunk/Source/WebCore/rendering/RenderElement.h
r156639 r156738 51 51 RenderObject* lastChild() const { return m_lastChild; } 52 52 53 // FIXME: Make these standalone and move to relevant files. 54 bool isRenderLayerModelObject() const; 55 bool isBoxModelObject() const; 56 bool isRenderBlock() const; 57 bool isRenderBlockFlow() const; 58 bool isRenderReplaced() const; 59 bool isRenderInline() const; 60 53 61 virtual bool isChildAllowed(RenderObject*, RenderStyle*) const { return true; } 54 62 virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0); … … 87 95 88 96 protected: 89 explicit RenderElement(Element*); 97 enum BaseTypeFlags { 98 RenderLayerModelObjectFlag = 1 << 0, 99 RenderBoxModelObjectFlag = 1 << 1, 100 RenderInlineFlag = 1 << 2, 101 RenderReplacedFlag = 1 << 3, 102 RenderBlockFlag = 1 << 4, 103 RenderBlockFlowFlag = 1 << 5, 104 }; 105 106 explicit RenderElement(Element*, unsigned baseTypeFlags); 90 107 91 108 bool layerCreationAllowedForSubtree() const; … … 130 147 RenderStyle* cachedFirstLineStyle() const; 131 148 149 unsigned m_baseTypeFlags : 6; 132 150 bool m_ancestorLineBoxDirty : 1; 133 151 … … 165 183 } 166 184 185 inline bool RenderElement::isRenderLayerModelObject() const 186 { 187 return m_baseTypeFlags & RenderLayerModelObjectFlag; 188 } 189 190 inline bool RenderElement::isBoxModelObject() const 191 { 192 return m_baseTypeFlags & RenderBoxModelObjectFlag; 193 } 194 195 inline bool RenderElement::isRenderBlock() const 196 { 197 return m_baseTypeFlags & RenderBlockFlag; 198 } 199 200 inline bool RenderElement::isRenderBlockFlow() const 201 { 202 return m_baseTypeFlags & RenderBlockFlowFlag; 203 } 204 205 inline bool RenderElement::isRenderReplaced() const 206 { 207 return m_baseTypeFlags & RenderReplacedFlag; 208 } 209 210 inline bool RenderElement::isRenderInline() const 211 { 212 return m_baseTypeFlags & RenderInlineFlag; 213 } 214 167 215 inline RenderElement& toRenderElement(RenderObject& object) 168 216 { … … 192 240 void toRenderElement(const RenderElement*); 193 241 void toRenderElement(const RenderElement&); 242 243 inline bool RenderObject::isRenderLayerModelObject() const 244 { 245 return isRenderElement() && toRenderElement(this)->isRenderLayerModelObject(); 246 } 247 248 inline bool RenderObject::isBoxModelObject() const 249 { 250 return isRenderElement() && toRenderElement(this)->isBoxModelObject(); 251 } 252 253 inline bool RenderObject::isRenderBlock() const 254 { 255 return isRenderElement() && toRenderElement(this)->isRenderBlock(); 256 } 257 258 inline bool RenderObject::isRenderBlockFlow() const 259 { 260 return isRenderElement() && toRenderElement(this)->isRenderBlockFlow(); 261 } 262 263 inline bool RenderObject::isRenderReplaced() const 264 { 265 return isRenderElement() && toRenderElement(this)->isRenderReplaced(); 266 } 267 268 inline bool RenderObject::isRenderInline() const 269 { 270 return isRenderElement() && toRenderElement(this)->isRenderInline(); 271 } 194 272 195 273 inline RenderStyle* RenderObject::style() const -
trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp
r156166 r156738 125 125 126 126 RenderFlexibleBox::RenderFlexibleBox(Element* element) 127 : RenderBlock(element )127 : RenderBlock(element, 0) 128 128 , m_orderIterator(this) 129 129 , m_numberOfInFlowChildrenOnFirstLine(-1) -
trunk/Source/WebCore/rendering/RenderFrameSet.cpp
r156155 r156738 46 46 47 47 RenderFrameSet::RenderFrameSet(HTMLFrameSetElement& frameSet) 48 : RenderBox(&frameSet )48 : RenderBox(&frameSet, 0) 49 49 , m_isResizing(false) 50 50 , m_isChildResizing(false) -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r156166 r156738 128 128 129 129 RenderGrid::RenderGrid(Element& element) 130 : RenderBlock(&element )130 : RenderBlock(&element, 0) 131 131 { 132 132 // All of our children must be block level. -
trunk/Source/WebCore/rendering/RenderInline.cpp
r156608 r156738 52 52 53 53 RenderInline::RenderInline(Element* element) 54 : RenderBoxModelObject(element )54 : RenderBoxModelObject(element, RenderInlineFlag) 55 55 , m_alwaysCreateLineBoxes(false) 56 56 { -
trunk/Source/WebCore/rendering/RenderInline.h
r156278 r156738 99 99 virtual const char* renderName() const OVERRIDE; 100 100 101 virtual bool isRenderInline() const OVERRIDE FINAL { return true; }102 101 virtual bool canHaveChildren() const OVERRIDE FINAL { return true; } 103 102 -
trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp
r156278 r156738 38 38 bool RenderLayerModelObject::s_layerWasSelfPainting = false; 39 39 40 RenderLayerModelObject::RenderLayerModelObject(Element* element )41 : RenderElement(element )40 RenderLayerModelObject::RenderLayerModelObject(Element* element, unsigned baseTypeFlags) 41 : RenderElement(element, baseTypeFlags | RenderLayerModelObjectFlag) 42 42 , m_layer(0) 43 43 { -
trunk/Source/WebCore/rendering/RenderLayerModelObject.h
r156102 r156738 32 32 class RenderLayerModelObject : public RenderElement { 33 33 public: 34 explicit RenderLayerModelObject(Element* );34 explicit RenderLayerModelObject(Element*, unsigned baseTypeFlags); 35 35 virtual ~RenderLayerModelObject(); 36 36 … … 58 58 59 59 private: 60 virtual bool isLayerModelObject() const OVERRIDE FINAL { return true; }61 62 60 RenderLayer* m_layer; 63 61 … … 71 69 inline RenderLayerModelObject* toRenderLayerModelObject(RenderObject* object) 72 70 { 73 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->is LayerModelObject());71 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderLayerModelObject()); 74 72 return static_cast<RenderLayerModelObject*>(object); 75 73 } … … 77 75 inline const RenderLayerModelObject* toRenderLayerModelObject(const RenderObject* object) 78 76 { 79 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->is LayerModelObject());77 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderLayerModelObject()); 80 78 return static_cast<const RenderLayerModelObject*>(object); 81 79 } -
trunk/Source/WebCore/rendering/RenderLineBreak.cpp
r156608 r156738 34 34 35 35 RenderLineBreak::RenderLineBreak(HTMLElement& element) 36 : RenderBoxModelObject(&element )36 : RenderBoxModelObject(&element, 0) 37 37 , m_inlineBoxWrapper(nullptr) 38 38 , m_cachedLineHeight(invalidLineHeight) -
trunk/Source/WebCore/rendering/RenderListMarker.cpp
r156613 r156738 1119 1119 1120 1120 RenderListMarker::RenderListMarker(RenderListItem& listItem) 1121 : RenderBox( 0)1121 : RenderBox(nullptr, 0) 1122 1122 , m_listItem(listItem) 1123 1123 { -
trunk/Source/WebCore/rendering/RenderObject.h
r156639 r156738 304 304 305 305 bool isRenderElement() const { return !isText(); } 306 virtual bool isBoxModelObject() const { return false; } 306 bool isRenderReplaced() const; 307 bool isBoxModelObject() const; 308 bool isRenderBlock() const; 309 bool isRenderBlockFlow() const; 310 bool isRenderInline() const; 311 bool isRenderLayerModelObject() const; 312 307 313 virtual bool isCounter() const { return false; } 308 314 virtual bool isQuote() const { return false; } … … 318 324 virtual bool isImage() const { return false; } 319 325 virtual bool isInlineBlockOrInlineTable() const { return false; } 320 virtual bool isLayerModelObject() const { return false; }321 326 virtual bool isListBox() const { return false; } 322 327 virtual bool isListItem() const { return false; } … … 331 336 virtual bool isProgress() const { return false; } 332 337 #endif 333 virtual bool isRenderBlock() const { return false; }334 virtual bool isRenderBlockFlow() const { return false; }335 338 virtual bool isRenderSVGBlock() const { return false; }; 336 339 virtual bool isRenderButton() const { return false; } 337 340 virtual bool isRenderIFrame() const { return false; } 338 341 virtual bool isRenderImage() const { return false; } 339 virtual bool isRenderInline() const { return false; }340 342 virtual bool isRenderRegion() const { return false; } 341 virtual bool isRenderReplaced() const { return false; }342 343 virtual bool isReplica() const { return false; } 343 344 -
trunk/Source/WebCore/rendering/RenderReplaced.cpp
r155374 r156738 44 44 45 45 RenderReplaced::RenderReplaced(Element* element) 46 : RenderBox(element )46 : RenderBox(element, RenderReplacedFlag) 47 47 , m_intrinsicSize(cDefaultWidth, cDefaultHeight) 48 48 { … … 51 51 52 52 RenderReplaced::RenderReplaced(Element* element, const LayoutSize& intrinsicSize) 53 : RenderBox(element )53 : RenderBox(element, RenderReplacedFlag) 54 54 , m_intrinsicSize(intrinsicSize) 55 55 { -
trunk/Source/WebCore/rendering/RenderReplaced.h
r156278 r156738 42 42 43 43 protected: 44 virtual bool isRenderReplaced() const OVERRIDE FINAL { return true; }45 46 44 virtual void willBeDestroyed(); 47 45 -
trunk/Source/WebCore/rendering/RenderReplica.cpp
r155908 r156738 36 36 37 37 RenderReplica::RenderReplica() 38 : RenderBox( 0)38 : RenderBox(nullptr, 0) 39 39 { 40 40 // This is a hack. Replicas are synthetic, and don't pick up the attributes of the -
trunk/Source/WebCore/rendering/RenderScrollbarPart.cpp
r156622 r156738 38 38 39 39 RenderScrollbarPart::RenderScrollbarPart(RenderScrollbar* scrollbar, ScrollbarPart part) 40 : RenderBlock( 0)40 : RenderBlock(nullptr, 0) 41 41 , m_scrollbar(scrollbar) 42 42 , m_part(part) -
trunk/Source/WebCore/rendering/RenderTable.cpp
r156355 r156738 52 52 53 53 RenderTable::RenderTable(Element* element) 54 : RenderBlock(element )54 : RenderBlock(element, 0) 55 55 , m_head(0) 56 56 , m_foot(0) -
trunk/Source/WebCore/rendering/RenderTableCol.cpp
r156155 r156738 37 37 38 38 RenderTableCol::RenderTableCol(Element& element) 39 : RenderBox(&element )39 : RenderBox(&element, 0) 40 40 , m_span(1) 41 41 { -
trunk/Source/WebCore/rendering/RenderTableRow.cpp
r156404 r156738 40 40 41 41 RenderTableRow::RenderTableRow(Element* element) 42 : RenderBox(element )42 : RenderBox(element, 0) 43 43 , m_rowIndex(unsetRowIndex) 44 44 { -
trunk/Source/WebCore/rendering/RenderTableSection.cpp
r156404 r156738 86 86 87 87 RenderTableSection::RenderTableSection(Element* element) 88 : RenderBox(element )88 : RenderBox(element, 0) 89 89 , m_cCol(0) 90 90 , m_cRow(0) -
trunk/Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp
r156255 r156738 35 35 36 36 RenderSVGGradientStop::RenderSVGGradientStop(SVGStopElement* element) 37 : RenderElement(element )37 : RenderElement(element, 0) 38 38 { 39 39 } -
trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
r156278 r156738 44 44 45 45 RenderSVGModelObject::RenderSVGModelObject(SVGElement& element) 46 : RenderElement(&element )46 : RenderElement(&element, 0) 47 47 , m_hasSVGShadow(false) 48 48 {
Note: See TracChangeset
for help on using the changeset viewer.