| Index: cc/tiles/picture_layer_tiling.cc
|
| diff --git a/cc/tiles/picture_layer_tiling.cc b/cc/tiles/picture_layer_tiling.cc
|
| index 73909131d9da3298b64fabfeff08958a2aac5a8e..67d70963de286bc99be71c8c549369595c71e0d9 100644
|
| --- a/cc/tiles/picture_layer_tiling.cc
|
| +++ b/cc/tiles/picture_layer_tiling.cc
|
| @@ -11,7 +11,6 @@
|
| #include <limits>
|
| #include <set>
|
|
|
| -#include "base/containers/hash_tables.h"
|
| #include "base/containers/small_map.h"
|
| #include "base/logging.h"
|
| #include "base/numerics/safe_conversions.h"
|
| @@ -117,7 +116,7 @@ Tile* PictureLayerTiling::CreateTile(const Tile::CreateInfo& info) {
|
| all_tiles_done_ = false;
|
| ScopedTilePtr tile = client_->CreateTile(info);
|
| Tile* raw_ptr = tile.get();
|
| - tiles_.add(key, std::move(tile));
|
| + tiles_[key] = std::move(tile);
|
| return raw_ptr;
|
| }
|
|
|
| @@ -186,8 +185,9 @@ void PictureLayerTiling::TakeTilesAndPropertiesFrom(
|
| all_tiles_done_ = pending_twin->all_tiles_done_;
|
| } else {
|
| while (!pending_twin->tiles_.empty()) {
|
| - TileMapKey key = pending_twin->tiles_.begin()->first;
|
| - tiles_.set(key, pending_twin->tiles_.take_and_erase(key));
|
| + auto pending_iter = pending_twin->tiles_.begin();
|
| + tiles_[pending_iter->first] = std::move(pending_iter->second);
|
| + pending_twin->tiles_.erase(pending_iter);
|
| }
|
| all_tiles_done_ &= pending_twin->all_tiles_done_;
|
| }
|
| @@ -296,11 +296,12 @@ void PictureLayerTiling::RemoveTilesInRegion(const Region& layer_invalidation,
|
| // twin, so it's slated for removal in the future.
|
| if (live_tiles_rect_.IsEmpty())
|
| return;
|
| - // Pick 16 for the size of the SmallMap before it promotes to a hash_map.
|
| + // Pick 16 for the size of the SmallMap before it promotes to a unordered_map.
|
| // 4x4 tiles should cover most small invalidations, and walking a vector of
|
| // 16 is fast enough. If an invalidation is huge we will fall back to a
|
| - // hash_map instead of a vector in the SmallMap.
|
| - base::SmallMap<base::hash_map<TileMapKey, gfx::Rect>, 16> remove_tiles;
|
| + // unordered_map instead of a vector in the SmallMap.
|
| + base::SmallMap<std::unordered_map<TileMapKey, gfx::Rect, TileMapKeyHash>, 16>
|
| + remove_tiles;
|
| gfx::Rect expanded_live_tiles_rect =
|
| tiling_data_.ExpandRectToTileBounds(live_tiles_rect_);
|
| for (Region::Iterator iter(layer_invalidation); iter.has_rect();
|
| @@ -547,7 +548,9 @@ ScopedTilePtr PictureLayerTiling::TakeTileAt(int i, int j) {
|
| TileMap::iterator found = tiles_.find(TileMapKey(i, j));
|
| if (found == tiles_.end())
|
| return nullptr;
|
| - return tiles_.take_and_erase(found);
|
| + ScopedTilePtr result = std::move(found->second);
|
| + tiles_.erase(found);
|
| + return result;
|
| }
|
|
|
| bool PictureLayerTiling::RemoveTileAt(int i, int j) {
|
| @@ -934,7 +937,7 @@ std::map<const Tile*, PrioritizedTile>
|
| PictureLayerTiling::UpdateAndGetAllPrioritizedTilesForTesting() const {
|
| std::map<const Tile*, PrioritizedTile> result;
|
| for (const auto& key_tile_pair : tiles_) {
|
| - Tile* tile = key_tile_pair.second;
|
| + Tile* tile = key_tile_pair.second.get();
|
| UpdateRequiredStatesOnTile(tile);
|
| PrioritizedTile prioritized_tile =
|
| MakePrioritizedTile(tile, ComputePriorityRectTypeForTile(tile));
|
| @@ -1005,7 +1008,7 @@ PictureLayerTiling::ComputePriorityRectTypeForTile(const Tile* tile) const {
|
| void PictureLayerTiling::GetAllPrioritizedTilesForTracing(
|
| std::vector<PrioritizedTile>* prioritized_tiles) const {
|
| for (const auto& tile_pair : tiles_) {
|
| - Tile* tile = tile_pair.second;
|
| + Tile* tile = tile_pair.second.get();
|
| prioritized_tiles->push_back(
|
| MakePrioritizedTile(tile, ComputePriorityRectTypeForTile(tile)));
|
| }
|
| @@ -1026,7 +1029,7 @@ void PictureLayerTiling::AsValueInto(
|
| size_t PictureLayerTiling::GPUMemoryUsageInBytes() const {
|
| size_t amount = 0;
|
| for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
|
| - const Tile* tile = it->second;
|
| + const Tile* tile = it->second.get();
|
| amount += tile->GPUMemoryUsageInBytes();
|
| }
|
| return amount;
|
|
|