| Index: cc/resources/worker_pool.cc
|
| diff --git a/cc/resources/worker_pool.cc b/cc/resources/worker_pool.cc
|
| index 09aa1aa26d4665d67effaeedea6ec98a35c78dd4..9b7e824a4d458e89d0c444097b8744001846286f 100644
|
| --- a/cc/resources/worker_pool.cc
|
| +++ b/cc/resources/worker_pool.cc
|
| @@ -29,13 +29,6 @@ WorkerPoolTask::WorkerPoolTask()
|
| did_complete_(false) {
|
| }
|
|
|
| -WorkerPoolTask::WorkerPoolTask(TaskVector* dependencies)
|
| - : did_schedule_(false),
|
| - did_run_(false),
|
| - did_complete_(false) {
|
| - dependencies_.swap(*dependencies);
|
| -}
|
| -
|
| WorkerPoolTask::~WorkerPoolTask() {
|
| DCHECK_EQ(did_schedule_, did_complete_);
|
| DCHECK(!did_run_ || did_schedule_);
|
| @@ -242,6 +235,7 @@ void WorkerPool::Inner::SetTaskGraph(TaskGraph* graph) {
|
| for (GraphNodeMap::iterator it = new_pending_tasks.begin();
|
| it != new_pending_tasks.end(); ++it) {
|
| internal::WorkerPoolTask* task = it->first;
|
| + DCHECK(task);
|
| GraphNode* node = it->second;
|
|
|
| // Completed tasks should not exist in |new_pending_tasks|.
|
| @@ -359,8 +353,8 @@ void WorkerPool::Inner::Run() {
|
| has_ready_to_run_tasks_cv_.Signal();
|
| }
|
|
|
| -WorkerPool::GraphNode::GraphNode(internal::WorkerPoolTask* task)
|
| - : task_(task),
|
| +WorkerPool::GraphNode::GraphNode()
|
| + : task_(NULL),
|
| priority_(0),
|
| num_dependencies_(0) {
|
| }
|
| @@ -414,59 +408,12 @@ void WorkerPool::DispatchCompletionCallbacks(TaskDeque* completed_tasks) {
|
| }
|
|
|
| void WorkerPool::SetTaskGraph(TaskGraph* graph) {
|
| - TRACE_EVENT0("cc", "WorkerPool::SetTaskGraph");
|
| + TRACE_EVENT1("cc", "WorkerPool::SetTaskGraph",
|
| + "num_tasks", graph->size());
|
|
|
| DCHECK(!in_dispatch_completion_callbacks_);
|
|
|
| inner_->SetTaskGraph(graph);
|
| }
|
|
|
| -// static
|
| -unsigned WorkerPool::BuildTaskGraphRecursive(
|
| - internal::WorkerPoolTask* task,
|
| - GraphNode* dependent,
|
| - unsigned priority,
|
| - TaskGraph* graph) {
|
| - GraphNodeMap::iterator it = graph->find(task);
|
| - if (it != graph->end()) {
|
| - GraphNode* node = it->second;
|
| - node->add_dependent(dependent);
|
| - return priority;
|
| - }
|
| -
|
| - scoped_ptr<GraphNode> node(new GraphNode(task));
|
| -
|
| - typedef internal::WorkerPoolTask::TaskVector TaskVector;
|
| - for (TaskVector::iterator dependency_it = task->dependencies().begin();
|
| - dependency_it != task->dependencies().end(); ++dependency_it) {
|
| - internal::WorkerPoolTask* dependency = dependency_it->get();
|
| - // Skip sub-tree if task has already completed.
|
| - if (dependency->HasCompleted())
|
| - continue;
|
| -
|
| - node->add_dependency();
|
| -
|
| - priority = BuildTaskGraphRecursive(dependency,
|
| - node.get(),
|
| - priority,
|
| - graph);
|
| - }
|
| -
|
| - node->set_priority(priority);
|
| - if (dependent)
|
| - node->add_dependent(dependent);
|
| -
|
| - graph->set(task, node.Pass());
|
| -
|
| - return priority + 1;
|
| -}
|
| -
|
| -// static
|
| -void WorkerPool::BuildTaskGraph(
|
| - internal::WorkerPoolTask* root, TaskGraph* graph) {
|
| - const unsigned kBasePriority = 0u;
|
| - if (root && !root->HasCompleted())
|
| - BuildTaskGraphRecursive(root, NULL, kBasePriority, graph);
|
| -}
|
| -
|
| } // namespace cc
|
|
|