Remove redundant AffineTransform in RenderSVGShape::fillAndStrokeShape()
https://bugs.webkit.org/show_bug.cgi?id=104736

Reviewed by Dean Jackson.

RenderSVGShape::fillAndStrokeShape() allocated a AffineTransform on
the stack which was shadowed by another one in narrower scope. It
can be removed.

* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::fillAndStrokeShape):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@137386 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Enhance the TileCache to cache more tiles
https://bugs.webkit.org/show_bug.cgi?id=104612

Reviewed by Tim Horton.

Add smarts to the TileCache so that it keeps some tiles around
for longer and can prepopulate tiles in to-be-scrolled-to regions.

The new tile management is as follows:
* As before, we expand the visible rect to create a "tile coverage rect"
which is twice the width, and three times the height of the visible rect.
* At the edges, this coverage rect is constrained by them, rather than being
truncated as before (leading to larger initial tile coverage).
* When tiles leave the coverage rect, we keep them around but track
them in cohorts (where a cohort is a set of tiles that left the coverage rect
at the same time).
* If a repaint comes in for a "secondary" tile, we don't paint it, but mark
the tile as being stale. It will get repainted (in full) if it moves back inside
the coverage rect.
* Cohorts are kept around for 2 seconds after they were created. A repeating
1-second timer clears tiles in old cohorts.
* Secondary tiles are pruned if the visible rect changes, or if zooming happens.
* TiledBacking exposes a way to prepopulate a rect with tiles; this is called
when scrolling (e.g. via Home/End keys). Tiles created this way (if outside
the coverage rect) go into a cohort.

* page/FrameView.cpp:
(WebCore::FrameView::requestScrollPositionUpdate): Tell the TiledBacking
to prepopulate some tiles.
* platform/graphics/TiledBacking.h:
(TiledBacking): Add prepopulateRect().
* platform/graphics/ca/mac/TileCache.h:
(TileInfo): The TileMap contains TileInfos, which contain a pointer
to the layer, their cohort, and a 'stale content' flag.
(WebCore::TileCache::TileInfo::TileInfo):
(TileCache):
(TileCohortInfo):
(WebCore::TileCache::TileCohortInfo::TileCohortInfo):
* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::TileCache):
(WebCore::TileCache::~TileCache):
(WebCore::TileCache::setNeedsDisplay):
(WebCore::TileCache::setNeedsDisplayInRect):
(WebCore::TileCache::setTileNeedsDisplayInRect):
(WebCore::TileCache::setScale):
(WebCore::TileCache::setAcceleratesDrawing):
(WebCore::TileCache::setTilesOpaque):
(WebCore::TileCache::prepopulateRect):
(WebCore::TileCache::setTileDebugBorderWidth):
(WebCore::TileCache::setTileDebugBorderColor):
(WebCore::TileCache::computeTileCoverageRect):
(WebCore::TileCache::tileSizeForCoverageRect):
(WebCore::TileCache::tileRevalidationTimerFired):
(WebCore::TileCache::blankPixelCount):
(WebCore::queueTileForRemoval):
(WebCore::TileCache::removeAllTiles):
(WebCore::TileCache::removeAllSecondaryTiles):
(WebCore::TileCache::removeTilesInCohort):
(WebCore::TileCache::revalidateTiles):
(WebCore::TileCache::nextTileCohort):
(WebCore::TileCache::startedNewCohort):
(WebCore::TileCache::newestTileCohort):
(WebCore::TileCache::oldestTileCohort):
(WebCore::TileCache::scheduleCohortRemoval):
(WebCore::TileCache::cohortRemovalTimerFired):
(WebCore::TileCache::ensureTilesForRect):
(WebCore::TileCache::tileGridExtent):
(WebCore::TileCache::tileCoverageRect):
(WebCore::TileCache::tileLayerAtIndex):
(WebCore::TileCache::drawTileMapContents):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@137387 268f45cc-cd09-0410-ab3c-d52691b4dbfc