| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/trace_event/trace_log.h" | 5 #include "base/trace_event/trace_log.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/base_switches.h" | 10 #include "base/base_switches.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 return chunk_->GetEventAt(handle.event_index); | 220 return chunk_->GetEventAt(handle.event_index); |
| 221 } | 221 } |
| 222 | 222 |
| 223 int generation() const { return generation_; } | 223 int generation() const { return generation_; } |
| 224 | 224 |
| 225 private: | 225 private: |
| 226 // MessageLoop::DestructionObserver | 226 // MessageLoop::DestructionObserver |
| 227 void WillDestroyCurrentMessageLoop() override; | 227 void WillDestroyCurrentMessageLoop() override; |
| 228 | 228 |
| 229 // MemoryDumpProvider implementation. | 229 // MemoryDumpProvider implementation. |
| 230 bool OnMemoryDump(ProcessMemoryDump* pmd) override; | 230 bool OnMemoryDump(const MemoryDumpArgs& args, |
| 231 ProcessMemoryDump* pmd) override; |
| 231 | 232 |
| 232 void FlushWhileLocked(); | 233 void FlushWhileLocked(); |
| 233 | 234 |
| 234 void CheckThisIsCurrentBuffer() const { | 235 void CheckThisIsCurrentBuffer() const { |
| 235 DCHECK(trace_log_->thread_local_event_buffer_.Get() == this); | 236 DCHECK(trace_log_->thread_local_event_buffer_.Get() == this); |
| 236 } | 237 } |
| 237 | 238 |
| 238 // Since TraceLog is a leaky singleton, trace_log_ will always be valid | 239 // Since TraceLog is a leaky singleton, trace_log_ will always be valid |
| 239 // as long as the thread exists. | 240 // as long as the thread exists. |
| 240 TraceLog* trace_log_; | 241 TraceLog* trace_log_; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 trace_event->UpdateDuration(now, thread_now); | 349 trace_event->UpdateDuration(now, thread_now); |
| 349 } | 350 } |
| 350 } | 351 } |
| 351 overhead_ += overhead; | 352 overhead_ += overhead; |
| 352 } | 353 } |
| 353 | 354 |
| 354 void TraceLog::ThreadLocalEventBuffer::WillDestroyCurrentMessageLoop() { | 355 void TraceLog::ThreadLocalEventBuffer::WillDestroyCurrentMessageLoop() { |
| 355 delete this; | 356 delete this; |
| 356 } | 357 } |
| 357 | 358 |
| 358 bool TraceLog::ThreadLocalEventBuffer::OnMemoryDump(ProcessMemoryDump* pmd) { | 359 bool TraceLog::ThreadLocalEventBuffer::OnMemoryDump(const MemoryDumpArgs& args, |
| 360 ProcessMemoryDump* pmd) { |
| 359 if (!chunk_) | 361 if (!chunk_) |
| 360 return true; | 362 return true; |
| 361 std::string dump_base_name = StringPrintf( | 363 std::string dump_base_name = StringPrintf( |
| 362 "tracing/thread_%d", static_cast<int>(PlatformThread::CurrentId())); | 364 "tracing/thread_%d", static_cast<int>(PlatformThread::CurrentId())); |
| 363 TraceEventMemoryOverhead overhead; | 365 TraceEventMemoryOverhead overhead; |
| 364 chunk_->EstimateTraceMemoryOverhead(&overhead); | 366 chunk_->EstimateTraceMemoryOverhead(&overhead); |
| 365 overhead.DumpInto(dump_base_name.c_str(), pmd); | 367 overhead.DumpInto(dump_base_name.c_str(), pmd); |
| 366 return true; | 368 return true; |
| 367 } | 369 } |
| 368 | 370 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 !CheckGeneration(thread_local_event_buffer->generation())) { | 461 !CheckGeneration(thread_local_event_buffer->generation())) { |
| 460 delete thread_local_event_buffer; | 462 delete thread_local_event_buffer; |
| 461 thread_local_event_buffer = NULL; | 463 thread_local_event_buffer = NULL; |
| 462 } | 464 } |
| 463 if (!thread_local_event_buffer) { | 465 if (!thread_local_event_buffer) { |
| 464 thread_local_event_buffer = new ThreadLocalEventBuffer(this); | 466 thread_local_event_buffer = new ThreadLocalEventBuffer(this); |
| 465 thread_local_event_buffer_.Set(thread_local_event_buffer); | 467 thread_local_event_buffer_.Set(thread_local_event_buffer); |
| 466 } | 468 } |
| 467 } | 469 } |
| 468 | 470 |
| 469 bool TraceLog::OnMemoryDump(ProcessMemoryDump* pmd) { | 471 bool TraceLog::OnMemoryDump(const MemoryDumpArgs& args, |
| 472 ProcessMemoryDump* pmd) { |
| 473 // TODO(ssid): Use MemoryDumpArgs to create light dumps when requested |
| 474 // (crbug.com/499731). |
| 470 TraceEventMemoryOverhead overhead; | 475 TraceEventMemoryOverhead overhead; |
| 471 overhead.Add("TraceLog", sizeof(*this)); | 476 overhead.Add("TraceLog", sizeof(*this)); |
| 472 { | 477 { |
| 473 AutoLock lock(lock_); | 478 AutoLock lock(lock_); |
| 474 if (logged_events_) | 479 if (logged_events_) |
| 475 logged_events_->EstimateTraceMemoryOverhead(&overhead); | 480 logged_events_->EstimateTraceMemoryOverhead(&overhead); |
| 476 } | 481 } |
| 477 overhead.AddSelf(); | 482 overhead.AddSelf(); |
| 478 overhead.DumpInto("tracing/main_trace_log", pmd); | 483 overhead.DumpInto("tracing/main_trace_log", pmd); |
| 479 return true; | 484 return true; |
| (...skipping 1253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1733 } | 1738 } |
| 1734 | 1739 |
| 1735 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1740 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
| 1736 if (*category_group_enabled_) { | 1741 if (*category_group_enabled_) { |
| 1737 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1742 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
| 1738 event_handle_); | 1743 event_handle_); |
| 1739 } | 1744 } |
| 1740 } | 1745 } |
| 1741 | 1746 |
| 1742 } // namespace trace_event_internal | 1747 } // namespace trace_event_internal |
| OLD | NEW |