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

Unified Diff: cc/resources/pixel_buffer_raster_worker_pool.h

Issue 174453003: cc: Replace RasterTaskStateMap with a vector and brute force search instead of hash map lookups. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add comment Created 6 years, 10 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/pixel_buffer_raster_worker_pool.h
diff --git a/cc/resources/pixel_buffer_raster_worker_pool.h b/cc/resources/pixel_buffer_raster_worker_pool.h
index fe34d1b0268faa8c16d5604be88933e25ec5170e..7130cced293c91ad3ca12225d9326bf006573583 100644
--- a/cc/resources/pixel_buffer_raster_worker_pool.h
+++ b/cc/resources/pixel_buffer_raster_worker_pool.h
@@ -5,22 +5,10 @@
#ifndef CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_
#define CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_
-#include <deque>
+#include <vector>
-#include "base/containers/hash_tables.h"
#include "cc/resources/raster_worker_pool.h"
-#if defined(COMPILER_GCC)
-namespace BASE_HASH_NAMESPACE {
-template <>
-struct hash<cc::internal::WorkerPoolTask*> {
- size_t operator()(cc::internal::WorkerPoolTask* ptr) const {
- return hash<size_t>()(reinterpret_cast<size_t>(ptr));
- }
-};
-} // namespace BASE_HASH_NAMESPACE
-#endif // COMPILER
-
namespace cc {
class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool {
@@ -51,24 +39,33 @@ class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool {
private:
struct RasterTaskState {
- RasterTaskState()
- : type(UNSCHEDULED), resource(NULL), required_for_activation(false) {}
-
- RasterTaskState& set_completed() {
- type = COMPLETED;
- return *this;
- }
- RasterTaskState& set_required_for_activation(bool is_required) {
- required_for_activation = is_required;
- return *this;
- }
+ class TaskComparator {
+ public:
+ explicit TaskComparator(const internal::WorkerPoolTask* task)
+ : task_(task) {}
+
+ bool operator()(const RasterTaskState& state) const {
+ return state.task == task_;
+ }
+
+ private:
+ const internal::WorkerPoolTask* task_;
+ };
+
+ typedef std::vector<RasterTaskState> Vector;
+
+ RasterTaskState(internal::WorkerPoolTask* task,
+ bool required_for_activation)
+ : type(UNSCHEDULED),
+ task(task),
+ resource(NULL),
+ required_for_activation(required_for_activation) {}
enum { UNSCHEDULED, SCHEDULED, UPLOADING, COMPLETED } type;
+ internal::WorkerPoolTask* task;
const Resource* resource;
bool required_for_activation;
};
- typedef internal::WorkerPoolTask* RasterTaskMapKey;
- typedef base::hash_map<RasterTaskMapKey, RasterTaskState> RasterTaskStateMap;
// Overridden from RasterWorkerPool:
virtual void OnRasterTasksFinished() OVERRIDE;
@@ -92,10 +89,10 @@ class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool {
bool shutdown_;
RasterTaskQueue raster_tasks_;
- RasterTaskStateMap raster_task_states_;
+ RasterTaskState::Vector raster_task_states_;
TaskDeque raster_tasks_with_pending_upload_;
- TaskDeque completed_raster_tasks_;
- TaskDeque completed_image_decode_tasks_;
+ TaskVector completed_raster_tasks_;
+ TaskVector completed_image_decode_tasks_;
size_t scheduled_raster_task_count_;
size_t raster_tasks_required_for_activation_count_;
« no previous file with comments | « no previous file | cc/resources/pixel_buffer_raster_worker_pool.cc » ('j') | cc/resources/pixel_buffer_raster_worker_pool.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698