WebKit memory management: Safari jetsams on some websites when zooming and scrolling
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 May 2018 17:55:43 +0000 (17:55 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 May 2018 17:55:43 +0000 (17:55 +0000)
commit84e7504ac9252c0fe88a62a9d205141397bb9ddd
tree1b7f8b4e33e0142672b7fc48f805915a938a6f6e
parent27af60e9c441b93bb8ce4238bb40466db6ba7b78
WebKit memory management: Safari jetsams on some websites when zooming and scrolling
https://bugs.webkit.org/show_bug.cgi?id=186091
<rdar://problem/36315010>

Reviewed by Geoff Garen.

When zooming a page rapidly the visible rect and the page zoom level may get momentarily out of sync.
When this happens we may generate tiles for a much larger area than needed and run out of memory
building the next layer tree transaction. Running out of memory is more likely if the page has lots of
tiled layers in addition to the main content layer.

We already have code for dealing with the scale mismatch for zoom-out case (where this would cause
visibly missing tiles). This patch enables the same exact adjustment for zoom-in case (where the
symptom is creating too many tiles).

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::adjustExposedRectForNewScale):

Do some renames to make it clear that this can both expand and contract the visible rect.
Bail out if there is nothing to do.

(WebKit::WebPage::updateVisibleContentRects):

Call adjustExposedRectForNewScale directly and unconditionally.

(WebKit::adjustExposedRectForBoundedScale): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232356 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebKit/ChangeLog
Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm