Bug 1771609 - patch 2 - Cache the block's nsLineIterator in a property on nsBlockFrame, for better performance on large pages. r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D147578
This commit is contained in:
Jonathan Kew
2022-06-03 22:05:36 +00:00
parent 2b329073f8
commit 8385002039
3 changed files with 35 additions and 10 deletions

View File

@@ -511,9 +511,14 @@ void nsBlockFrame::DestroyFrom(nsIFrame* aDestructRoot,
/* virtual */
nsILineIterator* nsBlockFrame::GetLineIterator() {
const nsStyleVisibility* visibility = StyleVisibility();
return new nsLineIterator(mLines,
visibility->mDirection == StyleDirection::Rtl);
nsLineIterator* iter = GetProperty(LineIteratorProperty());
if (!iter) {
const nsStyleVisibility* visibility = StyleVisibility();
iter = new nsLineIterator(mLines,
visibility->mDirection == StyleDirection::Rtl);
SetProperty(LineIteratorProperty(), iter);
}
return iter;
}
NS_QUERYFRAME_HEAD(nsBlockFrame)