| Index: cc/raster_worker_pool.cc | 
| diff --git a/cc/raster_worker_pool.cc b/cc/raster_worker_pool.cc | 
| index 8eb92c209da3d368877d8bd47222ebf6c7b56948..51101efae17dddc87c82d5ed623f55ca6d0e4e5d 100644 | 
| --- a/cc/raster_worker_pool.cc | 
| +++ b/cc/raster_worker_pool.cc | 
| @@ -40,11 +40,17 @@ void RunRasterTask(PicturePileImpl* picture_pile, | 
|  | 
| void RunImageDecodeTask(skia::LazyPixelRef* pixel_ref, RenderingStats* stats) { | 
| TRACE_EVENT0("cc", "RunImageDecodeTask"); | 
| -  base::TimeTicks decode_begin_time = base::TimeTicks::Now(); | 
| +  base::TimeTicks decode_begin_time; | 
| +  if (stats) | 
| +    decode_begin_time = base::TimeTicks::Now(); | 
| + | 
| pixel_ref->Decode(); | 
| -  stats->totalDeferredImageDecodeCount++; | 
| -  stats->totalDeferredImageDecodeTime += | 
| -      base::TimeTicks::Now() - decode_begin_time; | 
| + | 
| +  if (stats) { | 
| +    stats->totalDeferredImageDecodeCount++; | 
| +    stats->totalDeferredImageDecodeTime += | 
| +        base::TimeTicks::Now() - decode_begin_time; | 
| +  } | 
| } | 
|  | 
| const char* kRasterThreadNamePrefix = "CompositorRaster"; | 
| @@ -90,9 +96,11 @@ void RasterWorkerPool::Thread::Init() { | 
| #endif | 
| } | 
|  | 
| -RasterWorkerPool::RasterWorkerPool(size_t num_raster_threads) | 
| +RasterWorkerPool::RasterWorkerPool( | 
| +    size_t num_raster_threads, bool record_rendering_stats) | 
| : is_running_(false), | 
| -      raster_threads_need_sorting_(false) { | 
| +      raster_threads_need_sorting_(false), | 
| +      record_rendering_stats_(record_rendering_stats) { | 
| const std::string thread_name_prefix = kRasterThreadNamePrefix; | 
| while (raster_threads_.size() < num_raster_threads) { | 
| int thread_number = raster_threads_.size() + 1; | 
| @@ -158,7 +166,7 @@ void RasterWorkerPool::PostRasterTaskAndReply(PicturePileImpl* picture_pile, | 
| buffer, | 
| rect, | 
| contents_scale, | 
| -                 &task->rendering_stats_), | 
| +                 record_rendering_stats_ ? &task->rendering_stats_ : NULL), | 
| base::Bind(&RasterWorkerPool::OnRasterTaskCompleted, | 
| base::Unretained(this), | 
| base::Unretained(task), | 
| @@ -174,7 +182,8 @@ void RasterWorkerPool::PostImageDecodeTaskAndReply( | 
|  | 
| task->thread_->message_loop_proxy()->PostTaskAndReply( | 
| FROM_HERE, | 
| -      base::Bind(&RunImageDecodeTask, pixel_ref, &task->rendering_stats_), | 
| +      base::Bind(&RunImageDecodeTask, pixel_ref, | 
| +                 record_rendering_stats_ ? &task->rendering_stats_ : NULL), | 
| base::Bind(&RasterWorkerPool::OnTaskCompleted, | 
| base::Unretained(this), | 
| base::Unretained(task), | 
| @@ -182,6 +191,7 @@ void RasterWorkerPool::PostImageDecodeTaskAndReply( | 
| } | 
|  | 
| void RasterWorkerPool::GetRenderingStats(RenderingStats* stats) { | 
| +  DCHECK(record_rendering_stats_); | 
| stats->totalRasterizeTime = base::TimeDelta(); | 
| stats->totalPixelsRasterized = 0; | 
| stats->totalDeferredImageDecodeCount = 0; | 
|  |