Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: cc/resources/resource_pool.cc

Issue 1154393003: cc: Use CheckedNumeric for resource size calculations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/resources/resource_pool.cc
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc
index 08e2f4e1fc887351e7f2f3da8e031dca1f1b7d9f..209da05a33984b5a6101bbcd8d2b61e0b6a33f61 100644
--- a/cc/resources/resource_pool.cc
+++ b/cc/resources/resource_pool.cc
@@ -47,15 +47,17 @@ scoped_ptr<ScopedResource> ResourcePool::AcquireResource(
continue;
unused_resources_.erase(it);
- unused_memory_usage_bytes_ -= resource->bytes();
+ unused_memory_usage_bytes_ -=
+ Resource::UncheckedMemorySizeBytes(size, format);
return make_scoped_ptr(resource);
}
+ DCHECK(Resource::VerifySizeInBytes(size, format, nullptr));
scoped_ptr<ScopedResource> resource =
ScopedResource::Create(resource_provider_);
resource->AllocateManaged(size, target_, format);
- memory_usage_bytes_ += resource->bytes();
+ memory_usage_bytes_ += Resource::UncheckedMemorySizeBytes(size, format);
++resource_count_;
return resource.Pass();
}
@@ -75,7 +77,8 @@ scoped_ptr<ScopedResource> ResourcePool::TryAcquireResourceWithContentId(
DCHECK(resource_provider_->CanLockForWrite(resource->id()));
unused_resources_.erase(it);
- unused_memory_usage_bytes_ -= resource->bytes();
+ unused_memory_usage_bytes_ -=
+ Resource::UncheckedMemorySizeBytes(resource->size(), resource->format());
return make_scoped_ptr(resource);
}
@@ -108,8 +111,10 @@ void ResourcePool::ReduceResourceUsage() {
// memory is necessarily returned to the OS.
ScopedResource* resource = unused_resources_.front().resource;
unused_resources_.pop_front();
- memory_usage_bytes_ -= resource->bytes();
- unused_memory_usage_bytes_ -= resource->bytes();
+ size_t resource_bytes = Resource::UncheckedMemorySizeBytes(
+ resource->size(), resource->format());
+ memory_usage_bytes_ -= resource_bytes;
+ unused_memory_usage_bytes_ -= resource_bytes;
--resource_count_;
delete resource;
}
@@ -145,7 +150,8 @@ void ResourcePool::CheckBusyResources(bool wait_if_needed) {
void ResourcePool::DidFinishUsingResource(ScopedResource* resource,
uint64_t content_id) {
- unused_memory_usage_bytes_ += resource->bytes();
+ unused_memory_usage_bytes_ +=
+ Resource::UncheckedMemorySizeBytes(resource->size(), resource->format());
unused_resources_.push_back(PoolResource(resource, content_id));
}

Powered by Google App Engine
This is Rietveld 408576698