Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1294)

Unified Diff: Source/core/rendering/RenderObject.h

Issue 613783002: Smaller vtbls in RenderObject (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase better. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderMultiColumnSet.h ('k') | Source/core/rendering/RenderProgress.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderObject.h
diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h
index 1d9cfb9435200a383c05047e25dc1acda28374c0..7f1f8b5a75d2bd21ec1e6efa5ae523cbc6555fb1 100644
--- a/Source/core/rendering/RenderObject.h
+++ b/Source/core/rendering/RenderObject.h
@@ -333,59 +333,62 @@ public:
bool isPseudoElement() const { return node() && node()->isPseudoElement(); }
virtual bool isBoxModelObject() const { return false; }
- virtual bool isBR() const { return false; }
- virtual bool isCanvas() const { return false; }
- virtual bool isCounter() const { return false; }
- virtual bool isDetailsMarker() const { return false; }
- virtual bool isEmbeddedObject() const { return false; }
- virtual bool isFieldset() const { return false; }
- virtual bool isFileUploadControl() const { return false; }
- virtual bool isFrame() const { return false; }
- virtual bool isFrameSet() const { return false; }
+ bool isBR() const { return isOfType(RenderObjectBr); }
+ bool isCanvas() const { return isOfType(RenderObjectCanvas); }
+ bool isCounter() const { return isOfType(RenderObjectCounter); }
+ bool isDetailsMarker() const { return isOfType(RenderObjectDetailsMarker); }
+ bool isEmbeddedObject() const { return isOfType(RenderObjectEmbeddedObject); }
+ bool isFieldset() const { return isOfType(RenderObjectFieldset); }
+ bool isFileUploadControl() const { return isOfType(RenderObjectFileUploadControl); }
+ bool isFrame() const { return isOfType(RenderObjectFrame); }
+ bool isFrameSet() const { return isOfType(RenderObjectFrameSet); }
+ bool isListBox() const { return isOfType(RenderObjectListBox); }
+ bool isListItem() const { return isOfType(RenderObjectListItem); }
+ bool isListMarker() const { return isOfType(RenderObjectListMarker); }
+ bool isMarquee() const { return isOfType(RenderObjectMarquee); }
+ bool isMedia() const { return isOfType(RenderObjectMedia); }
+ bool isMenuList() const { return isOfType(RenderObjectMenuList); }
+ bool isMeter() const { return isOfType(RenderObjectMeter); }
+ bool isProgress() const { return isOfType(RenderObjectProgress); }
+ bool isQuote() const { return isOfType(RenderObjectQuote); }
+ bool isRenderButton() const { return isOfType(RenderObjectRenderButton); }
+ bool isRenderFullScreen() const { return isOfType(RenderObjectRenderFullScreen); }
+ bool isRenderFullScreenPlaceholder() const { return isOfType(RenderObjectRenderFullScreenPlaceholder); }
+ bool isRenderGrid() const { return isOfType(RenderObjectRenderGrid); }
+ bool isRenderIFrame() const { return isOfType(RenderObjectRenderIFrame); }
+ bool isRenderImage() const { return isOfType(RenderObjectRenderImage); }
+ bool isRenderMultiColumnSet() const { return isOfType(RenderObjectRenderMultiColumnSet); }
+ bool isRenderRegion() const { return isOfType(RenderObjectRenderRegion); }
+ bool isRenderScrollbarPart() const { return isOfType(RenderObjectRenderScrollbarPart); }
+ bool isRenderTableCol() const { return isOfType(RenderObjectRenderTableCol); }
+ bool isRenderView() const { return isOfType(RenderObjectRenderView); }
+ bool isReplica() const { return isOfType(RenderObjectReplica); }
+ bool isRuby() const { return isOfType(RenderObjectRuby); }
+ bool isRubyBase() const { return isOfType(RenderObjectRubyBase); }
+ bool isRubyRun() const { return isOfType(RenderObjectRubyRun); }
+ bool isRubyText() const { return isOfType(RenderObjectRubyText); }
+ bool isSlider() const { return isOfType(RenderObjectSlider); }
+ bool isSliderThumb() const { return isOfType(RenderObjectSliderThumb); }
+ bool isTable() const { return isOfType(RenderObjectTable); }
+ bool isTableCaption() const { return isOfType(RenderObjectTableCaption); }
+ bool isTableCell() const { return isOfType(RenderObjectTableCell); }
+ bool isTableRow() const { return isOfType(RenderObjectTableRow); }
+ bool isTableSection() const { return isOfType(RenderObjectTableSection); }
+ bool isTextArea() const { return isOfType(RenderObjectTextArea); }
+ bool isTextControl() const { return isOfType(RenderObjectTextControl); }
+ bool isTextField() const { return isOfType(RenderObjectTextField); }
+ bool isVideo() const { return isOfType(RenderObjectVideo); }
+ bool isWidget() const { return isOfType(RenderObjectWidget); }
+
virtual bool isImage() const { return false; }
+
virtual bool isInlineBlockOrInlineTable() const { return false; }
virtual bool isLayerModelObject() const { return false; }
- virtual bool isListBox() const { return false; }
- virtual bool isListItem() const { return false; }
- virtual bool isListMarker() const { return false; }
- virtual bool isMarquee() const { return false; }
- virtual bool isMedia() const { return false; }
- virtual bool isMenuList() const { return false; }
- virtual bool isMeter() const { return false; }
- virtual bool isProgress() const { return false; }
- virtual bool isQuote() const { return false; }
virtual bool isRenderBlock() const { return false; }
virtual bool isRenderBlockFlow() const { return false; }
- virtual bool isRenderButton() const { return false; }
virtual bool isRenderFlowThread() const { return false; }
- virtual bool isRenderFullScreen() const { return false; }
- virtual bool isRenderFullScreenPlaceholder() const { return false; }
- virtual bool isRenderGrid() const { return false; }
- virtual bool isRenderIFrame() const { return false; }
- virtual bool isRenderImage() const { return false; }
virtual bool isRenderInline() const { return false; }
- virtual bool isRenderMultiColumnSet() const { return false; }
virtual bool isRenderPart() const { return false; }
- virtual bool isRenderRegion() const { return false; }
- virtual bool isRenderScrollbarPart() const { return false; }
- virtual bool isRenderTableCol() const { return false; }
- virtual bool isRenderView() const { return false; }
- virtual bool isReplica() const { return false; }
- virtual bool isRuby() const { return false; }
- virtual bool isRubyBase() const { return false; }
- virtual bool isRubyRun() const { return false; }
- virtual bool isRubyText() const { return false; }
- virtual bool isSlider() const { return false; }
- virtual bool isSliderThumb() const { return false; }
- virtual bool isTable() const { return false; }
- virtual bool isTableCaption() const { return false; }
- virtual bool isTableCell() const { return false; }
- virtual bool isTableRow() const { return false; }
- virtual bool isTableSection() const { return false; }
- virtual bool isTextArea() const { return false; }
- virtual bool isTextControl() const { return false; }
- virtual bool isTextField() const { return false; }
- virtual bool isVideo() const { return false; }
bool isDocumentElement() const { return document().documentElement() == m_node; }
// isBody is called from RenderBox::styleWillChange and is thus quite hot.
@@ -441,23 +444,23 @@ public:
// FIXME: Until all SVG renders can be subclasses of RenderSVGModelObject we have
// to add SVG renderer methods to RenderObject with an ASSERT_NOT_REACHED() default implementation.
- virtual bool isSVG() const { return false; }
- virtual bool isSVGRoot() const { return false; }
- virtual bool isSVGContainer() const { return false; }
- virtual bool isSVGTransformableContainer() const { return false; }
- virtual bool isSVGViewportContainer() const { return false; }
- virtual bool isSVGGradientStop() const { return false; }
- virtual bool isSVGHiddenContainer() const { return false; }
- virtual bool isSVGShape() const { return false; }
- virtual bool isSVGText() const { return false; }
- virtual bool isSVGTextPath() const { return false; }
- virtual bool isSVGInline() const { return false; }
- virtual bool isSVGInlineText() const { return false; }
- virtual bool isSVGImage() const { return false; }
- virtual bool isSVGForeignObject() const { return false; }
- virtual bool isSVGResourceContainer() const { return false; }
- virtual bool isSVGResourceFilter() const { return false; }
- virtual bool isSVGResourceFilterPrimitive() const { return false; }
+ bool isSVG() const { return isOfType(RenderObjectSVG); }
+ bool isSVGRoot() const { return isOfType(RenderObjectSVGRoot); }
+ bool isSVGContainer() const { return isOfType(RenderObjectSVGContainer); }
+ bool isSVGTransformableContainer() const { return isOfType(RenderObjectSVGTransformableContainer); }
+ bool isSVGViewportContainer() const { return isOfType(RenderObjectSVGViewportContainer); }
+ bool isSVGGradientStop() const { return isOfType(RenderObjectSVGGradientStop); }
+ bool isSVGHiddenContainer() const { return isOfType(RenderObjectSVGHiddenContainer); }
+ bool isSVGShape() const { return isOfType(RenderObjectSVGShape); }
+ bool isSVGText() const { return isOfType(RenderObjectSVGText); }
+ bool isSVGTextPath() const { return isOfType(RenderObjectSVGTextPath); }
+ bool isSVGInline() const { return isOfType(RenderObjectSVGInline); }
+ bool isSVGInlineText() const { return isOfType(RenderObjectSVGInlineText); }
+ bool isSVGImage() const { return isOfType(RenderObjectSVGImage); }
+ bool isSVGForeignObject() const { return isOfType(RenderObjectSVGForeignObject); }
+ bool isSVGResourceContainer() const { return isOfType(RenderObjectSVGResourceContainer); }
+ bool isSVGResourceFilter() const { return isOfType(RenderObjectSVGResourceFilter); }
+ bool isSVGResourceFilterPrimitive() const { return isOfType(RenderObjectSVGResourceFilterPrimitive); }
// FIXME: Those belong into a SVG specific base-class for all renderers (see above)
// Unfortunately we don't have such a class yet, because it's not possible for all renderers
@@ -1049,6 +1052,77 @@ public:
virtual LayoutRect viewRect() const;
protected:
+ enum RenderObjectType {
+ RenderObjectBr,
+ RenderObjectCanvas,
+ RenderObjectFieldset,
+ RenderObjectCounter,
+ RenderObjectDetailsMarker,
+ RenderObjectEmbeddedObject,
+ RenderObjectFileUploadControl,
+ RenderObjectFrame,
+ RenderObjectFrameSet,
+ RenderObjectListBox,
+ RenderObjectListItem,
+ RenderObjectListMarker,
+ RenderObjectMarquee,
+ RenderObjectMedia,
+ RenderObjectMenuList,
+ RenderObjectMeter,
+ RenderObjectProgress,
+ RenderObjectQuote,
+ RenderObjectRenderButton,
+ RenderObjectRenderFlowThread,
+ RenderObjectRenderFullScreen,
+ RenderObjectRenderFullScreenPlaceholder,
+ RenderObjectRenderGrid,
+ RenderObjectRenderIFrame,
+ RenderObjectRenderImage,
+ RenderObjectRenderInline,
+ RenderObjectRenderMultiColumnSet,
+ RenderObjectRenderPart,
+ RenderObjectRenderRegion,
+ RenderObjectRenderScrollbarPart,
+ RenderObjectRenderTableCol,
+ RenderObjectRenderView,
+ RenderObjectReplica,
+ RenderObjectRuby,
+ RenderObjectRubyBase,
+ RenderObjectRubyRun,
+ RenderObjectRubyText,
+ RenderObjectSlider,
+ RenderObjectSliderThumb,
+ RenderObjectTable,
+ RenderObjectTableCaption,
+ RenderObjectTableCell,
+ RenderObjectTableRow,
+ RenderObjectTableSection,
+ RenderObjectTextArea,
+ RenderObjectTextControl,
+ RenderObjectTextField,
+ RenderObjectVideo,
+ RenderObjectWidget,
+
+ RenderObjectSVG, /* Keep by itself? */
+ RenderObjectSVGRoot,
+ RenderObjectSVGContainer,
+ RenderObjectSVGTransformableContainer,
+ RenderObjectSVGViewportContainer,
+ RenderObjectSVGHiddenContainer,
+ RenderObjectSVGGradientStop,
+ RenderObjectSVGShape,
+ RenderObjectSVGText,
+ RenderObjectSVGTextPath,
+ RenderObjectSVGInline,
+ RenderObjectSVGInlineText,
+ RenderObjectSVGImage,
+ RenderObjectSVGForeignObject,
+ RenderObjectSVGResourceContainer,
+ RenderObjectSVGResourceFilter,
+ RenderObjectSVGResourceFilterPrimitive,
+ };
+ virtual bool isOfType(RenderObjectType type) const { return false; }
+
inline bool layerCreationAllowedForSubtree() const;
// Overrides should call the superclass at the end. m_style will be 0 the first time
« no previous file with comments | « Source/core/rendering/RenderMultiColumnSet.h ('k') | Source/core/rendering/RenderProgress.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698