[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
hyatt
hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:24:50 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 0000dafa52fca93321a4604231cc9a67398d7b39
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jan 30 19:12:55 2004 +0000
Make m_lineHeight be cached on RenderFlow instead of RenderText and avoid recomputing it so much when it
is not set by CSS (since calls to fontMetrics().lineSpacing() are expensive).
Yields ~1.5% performance improvement.
Reviewed by darin
* khtml/rendering/render_block.cpp:
(khtml::RenderBlock::setStyle):
* khtml/rendering/render_flow.cpp:
(RenderFlow::lineHeight):
* khtml/rendering/render_flow.h:
* khtml/rendering/render_inline.cpp:
(RenderInline::setStyle):
* khtml/rendering/render_object.cpp:
(RenderObject::verticalPositionHint):
(RenderObject::lineHeight):
* khtml/rendering/render_object.h:
* khtml/rendering/render_text.cpp:
(RenderText::setStyle):
(RenderText::checkSelectionPointIgnoringContinuations):
(RenderText::height):
(RenderText::lineHeight):
* khtml/rendering/render_text.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6010 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 41819e0..6d1033c 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,32 @@
2004-01-30 David Hyatt <hyatt at apple.com>
+ Make m_lineHeight be cached on RenderFlow instead of RenderText and avoid recomputing it so much when it
+ is not set by CSS (since calls to fontMetrics().lineSpacing() are expensive).
+
+ Yields ~1.5% performance improvement.
+
+ Reviewed by darin
+
+ * khtml/rendering/render_block.cpp:
+ (khtml::RenderBlock::setStyle):
+ * khtml/rendering/render_flow.cpp:
+ (RenderFlow::lineHeight):
+ * khtml/rendering/render_flow.h:
+ * khtml/rendering/render_inline.cpp:
+ (RenderInline::setStyle):
+ * khtml/rendering/render_object.cpp:
+ (RenderObject::verticalPositionHint):
+ (RenderObject::lineHeight):
+ * khtml/rendering/render_object.h:
+ * khtml/rendering/render_text.cpp:
+ (RenderText::setStyle):
+ (RenderText::checkSelectionPointIgnoringContinuations):
+ (RenderText::height):
+ (RenderText::lineHeight):
+ * khtml/rendering/render_text.h:
+
+2004-01-30 David Hyatt <hyatt at apple.com>
+
Disable XBL. The loadBindings call was taking 0.1-0.25%. While I know how to get rid of this overhead,
it's easier for now to just disable all of XBL.
diff --git a/WebCore/khtml/rendering/render_block.cpp b/WebCore/khtml/rendering/render_block.cpp
index 2f8d58d..15766de 100644
--- a/WebCore/khtml/rendering/render_block.cpp
+++ b/WebCore/khtml/rendering/render_block.cpp
@@ -90,6 +90,8 @@ void RenderBlock::setStyle(RenderStyle* _style)
child = child->nextSibling();
}
+ m_lineHeight = -1;
+
// Update pseudos for :before and :after now.
updatePseudoChild(RenderStyle::BEFORE, firstChild());
updatePseudoChild(RenderStyle::AFTER, lastChild());
diff --git a/WebCore/khtml/rendering/render_flow.cpp b/WebCore/khtml/rendering/render_flow.cpp
index 371087f..765985f 100644
--- a/WebCore/khtml/rendering/render_flow.cpp
+++ b/WebCore/khtml/rendering/render_flow.cpp
@@ -151,6 +151,26 @@ void RenderFlow::detach()
RenderBox::detach();
}
+short RenderFlow::lineHeight(bool firstLine, bool isRootLineBox) const
+{
+ if (firstLine) {
+ RenderStyle* s = style(firstLine);
+ Length lh = s->lineHeight();
+ if (lh.value < 0) {
+ if (m_lineHeight == -1)
+ m_lineHeight = RenderObject::lineHeight(false);
+ return m_lineHeight;
+ }
+ if (lh.isPercent())
+ return lh.minWidth(s->font().pixelSize());
+ return lh.value;
+ }
+
+ if (m_lineHeight == -1)
+ m_lineHeight = RenderObject::lineHeight(false);
+ return m_lineHeight;
+}
+
InlineBox* RenderFlow::createInlineBox(bool makePlaceHolderBox, bool isRootLineBox)
{
if (!isRootLineBox &&
diff --git a/WebCore/khtml/rendering/render_flow.h b/WebCore/khtml/rendering/render_flow.h
index e96c718..2cd8c90 100644
--- a/WebCore/khtml/rendering/render_flow.h
+++ b/WebCore/khtml/rendering/render_flow.h
@@ -59,6 +59,8 @@ public:
void deleteLineBoxes();
virtual void detach();
+ virtual short lineHeight(bool firstLine, bool isRootLineBox=false) const;
+
InlineFlowBox* firstLineBox() const { return m_firstLineBox; }
InlineFlowBox* lastLineBox() const { return m_lastLineBox; }
@@ -89,6 +91,8 @@ protected:
// For inline flows, each box represents a portion of that inline.
InlineFlowBox* m_firstLineBox;
InlineFlowBox* m_lastLineBox;
+
+ mutable short m_lineHeight;
};
diff --git a/WebCore/khtml/rendering/render_inline.cpp b/WebCore/khtml/rendering/render_inline.cpp
index 56984aa..5ffbf3d 100644
--- a/WebCore/khtml/rendering/render_inline.cpp
+++ b/WebCore/khtml/rendering/render_inline.cpp
@@ -59,6 +59,8 @@ void RenderInline::setStyle(RenderStyle* _style)
currCont = currCont->continuation();
}
+ m_lineHeight = -1;
+
// Update pseudos for :before and :after now.
updatePseudoChild(RenderStyle::BEFORE, firstChild());
updatePseudoChild(RenderStyle::AFTER, lastChild());
diff --git a/WebCore/khtml/rendering/render_object.cpp b/WebCore/khtml/rendering/render_object.cpp
index bed34ce..9193ef2 100644
--- a/WebCore/khtml/rendering/render_object.cpp
+++ b/WebCore/khtml/rendering/render_object.cpp
@@ -1844,7 +1844,7 @@ short RenderObject::verticalPositionHint( bool firstLine ) const
if ( m_verticalPosition == PositionUndefined || firstLine ) {
vpos = getVerticalPosition( firstLine );
if ( !firstLine )
- const_cast<RenderObject *>(this)->m_verticalPosition = vpos;
+ m_verticalPosition = vpos;
}
return vpos;
@@ -1909,14 +1909,16 @@ short RenderObject::getVerticalPosition( bool firstLine ) const
short RenderObject::lineHeight( bool firstLine, bool ) const
{
- Length lh = style(firstLine)->lineHeight();
+ RenderStyle* s = style(firstLine);
+
+ Length lh = s->lineHeight();
// its "unset", choose nice default
- if ( lh.value < 0 )
- return style(firstLine)->fontMetrics().lineSpacing();
+ if (lh.value < 0)
+ return s->fontMetrics().lineSpacing();
- if ( lh.isPercent() )
- return lh.minWidth( style(firstLine)->font().pixelSize() );
+ if (lh.isPercent())
+ return lh.minWidth(s->font().pixelSize());
// its fixed
return lh.value;
diff --git a/WebCore/khtml/rendering/render_object.h b/WebCore/khtml/rendering/render_object.h
index 99d7dd1..5bee100 100644
--- a/WebCore/khtml/rendering/render_object.h
+++ b/WebCore/khtml/rendering/render_object.h
@@ -733,7 +733,7 @@ private:
RenderObject *m_previous;
RenderObject *m_next;
- short m_verticalPosition;
+ mutable short m_verticalPosition;
bool m_needsLayout : 1;
bool m_normalChildNeedsLayout : 1;
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index 49535af..1d2384b 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -275,7 +275,6 @@ void RenderText::setStyle(RenderStyle *_style)
(style() && style()->textTransform() != _style->textTransform());
RenderObject::setStyle( _style );
- m_lineHeight = RenderObject::lineHeight(false);
if (needToTransformText) {
DOM::DOMStringImpl* textToTransform = originalString();
@@ -403,7 +402,7 @@ FindSelectionResult RenderText::checkSelectionPointIgnoringContinuations(int _x,
for (InlineTextBox* s = firstTextBox(); s; s = s->nextTextBox()) {
int result;
const Font *f = htmlFont(s == firstTextBox());
- result = s->checkSelectionPoint(_x, _y, _tx, _ty, f, this, offset, m_lineHeight);
+ result = s->checkSelectionPoint(_x, _y, _tx, _ty, f, this, offset, lineHeight(false));
// kdDebug(6040) << "RenderText::checkSelectionPoint " << this << " line " << si << " result=" << result << " offset=" << offset << endl;
if ( result == SelectionPointInside ) // x,y is inside the InlineTextBox
@@ -1171,16 +1170,13 @@ int RenderText::height() const
// FIXME: Why use line-height? Shouldn't we be adding in the height of the last text box? -dwh
int retval = 0;
if (firstTextBox())
- retval = lastTextBox()->m_y + m_lineHeight - firstTextBox()->m_y;
+ retval = lastTextBox()->m_y + lineHeight(false) - firstTextBox()->m_y;
return retval;
}
-short RenderText::lineHeight( bool firstLine, bool ) const
+short RenderText::lineHeight( bool firstLine, bool isRootLineBox) const
{
- if ( firstLine )
- return RenderObject::lineHeight( firstLine );
-
- return m_lineHeight;
+ return parent()->lineHeight(firstLine, isRootLineBox);
}
short RenderText::baselinePosition( bool firstLine, bool ) const
diff --git a/WebCore/khtml/rendering/render_text.h b/WebCore/khtml/rendering/render_text.h
index bda68ad..b505a0e 100644
--- a/WebCore/khtml/rendering/render_text.h
+++ b/WebCore/khtml/rendering/render_text.h
@@ -222,7 +222,6 @@ protected: // members
InlineTextBox* m_firstTextBox;
InlineTextBox* m_lastTextBox;
- short m_lineHeight;
short m_minWidth;
short m_maxWidth;
short m_beginMinWidth;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list