| 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 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 TraceEvent* GetEventByHandle(TraceEventHandle handle) { | 216 TraceEvent* GetEventByHandle(TraceEventHandle handle) { |
| 217 if (!chunk_ || handle.chunk_seq != chunk_->seq() || | 217 if (!chunk_ || handle.chunk_seq != chunk_->seq() || |
| 218 handle.chunk_index != chunk_index_) { | 218 handle.chunk_index != chunk_index_) { |
| 219 return nullptr; | 219 return nullptr; |
| 220 } | 220 } |
| 221 | 221 |
| 222 return chunk_->GetEventAt(handle.event_index); | 222 return chunk_->GetEventAt(handle.event_index); |
| 223 } | 223 } |
| 224 | 224 |
| 225 int generation() const { return generation_; } | 225 int generation() const { return generation_; } |
| 226 size_t chunk_index() { return chunk_index_; } |
| 226 | 227 |
| 227 private: | 228 private: |
| 228 // MessageLoop::DestructionObserver | 229 // MessageLoop::DestructionObserver |
| 229 void WillDestroyCurrentMessageLoop() override; | 230 void WillDestroyCurrentMessageLoop() override; |
| 230 | 231 |
| 231 // MemoryDumpProvider implementation. | 232 // MemoryDumpProvider implementation. |
| 232 bool OnMemoryDump(const MemoryDumpArgs& args, | 233 bool OnMemoryDump(const MemoryDumpArgs& args, |
| 233 ProcessMemoryDump* pmd) override; | 234 ProcessMemoryDump* pmd) override; |
| 234 | 235 |
| 235 void FlushWhileLocked(); | 236 void FlushWhileLocked(); |
| (...skipping 1011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1247 if (*category_group_enabled & ENABLED_FOR_RECORDING) { | 1248 if (*category_group_enabled & ENABLED_FOR_RECORDING) { |
| 1248 OptionalAutoLock lock(&lock_); | 1249 OptionalAutoLock lock(&lock_); |
| 1249 | 1250 |
| 1250 TraceEvent* trace_event = NULL; | 1251 TraceEvent* trace_event = NULL; |
| 1251 if (thread_local_event_buffer) { | 1252 if (thread_local_event_buffer) { |
| 1252 trace_event = thread_local_event_buffer->AddTraceEvent(&handle); | 1253 trace_event = thread_local_event_buffer->AddTraceEvent(&handle); |
| 1253 } else { | 1254 } else { |
| 1254 lock.EnsureAcquired(); | 1255 lock.EnsureAcquired(); |
| 1255 trace_event = AddEventToThreadSharedChunkWhileLocked(&handle, true); | 1256 trace_event = AddEventToThreadSharedChunkWhileLocked(&handle, true); |
| 1256 } | 1257 } |
| 1258 if (strcmp(name, "SequencedWorkerPool::Inner::ThreadLoop") == 0) { |
| 1259 LOG(ERROR) << "ssid adding event SequencedWorkerPool::Inner::ThreadLoop us
ing " << (thread_local_event_buffer ? "thread_local " : "thread_shared ") << han
dle.chunk_seq << " " << handle.chunk_index << " " << handle.event_index << " " <
< name; |
| 1260 |
| 1261 LOG(ERROR) << "ssid sshared index " << thread_shared_chunk_index_ << " loc
al index " << (thread_local_event_buffer? thread_local_event_buffer->chunk_index
() : 0); |
| 1262 } |
| 1257 | 1263 |
| 1258 if (trace_event) { | 1264 if (trace_event) { |
| 1259 trace_event->Initialize(thread_id, | 1265 trace_event->Initialize(thread_id, |
| 1260 offset_event_timestamp, | 1266 offset_event_timestamp, |
| 1261 thread_now, | 1267 thread_now, |
| 1262 phase, | 1268 phase, |
| 1263 category_group_enabled, | 1269 category_group_enabled, |
| 1264 name, | 1270 name, |
| 1265 scope, | 1271 scope, |
| 1266 id, | 1272 id, |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1429 TraceEventETWExport::AddCompleteEndEvent(name); | 1435 TraceEventETWExport::AddCompleteEndEvent(name); |
| 1430 #endif // OS_WIN | 1436 #endif // OS_WIN |
| 1431 | 1437 |
| 1432 std::string console_message; | 1438 std::string console_message; |
| 1433 if (category_group_enabled_local & ENABLED_FOR_RECORDING) { | 1439 if (category_group_enabled_local & ENABLED_FOR_RECORDING) { |
| 1434 OptionalAutoLock lock(&lock_); | 1440 OptionalAutoLock lock(&lock_); |
| 1435 | 1441 |
| 1436 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock); | 1442 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock); |
| 1437 if (trace_event) { | 1443 if (trace_event) { |
| 1438 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE); | 1444 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE); |
| 1445 if (trace_event->duration().ToInternalValue() != -1) { |
| 1446 LOG(ERROR) << "ssid got event from " << (thread_local_event_buffer_.Get
() ? "thread_local" : "thread_shared"); |
| 1447 if (thread_shared_chunk_ && handle.chunk_index == thread_shared_chunk_in
dex_) |
| 1448 LOG(ERROR) << "ssid event if not local is from in flight shared chunk
with index " << thread_shared_chunk_index_; |
| 1449 else |
| 1450 LOG(ERROR) << "ssid event if not local is from logged_events_"; |
| 1451 LOG(ERROR) << "ssid duration set for handle " << handle.chunk_seq << " "
<< handle.chunk_index << " " << handle.event_index << " " << name; |
| 1452 } |
| 1453 CHECK_EQ(trace_event->name(), name); |
| 1439 trace_event->UpdateDuration(now, thread_now); | 1454 trace_event->UpdateDuration(now, thread_now); |
| 1440 #if defined(OS_ANDROID) | 1455 #if defined(OS_ANDROID) |
| 1441 trace_event->SendToATrace(); | 1456 trace_event->SendToATrace(); |
| 1442 #endif | 1457 #endif |
| 1443 } | 1458 } |
| 1444 | 1459 |
| 1445 if (trace_options() & kInternalEchoToConsole) { | 1460 if (trace_options() & kInternalEchoToConsole) { |
| 1446 console_message = | 1461 console_message = |
| 1447 EventToConsoleMessage(TRACE_EVENT_PHASE_END, now, trace_event); | 1462 EventToConsoleMessage(TRACE_EVENT_PHASE_END, now, trace_event); |
| 1448 } | 1463 } |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 } | 1751 } |
| 1737 | 1752 |
| 1738 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1753 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
| 1739 if (*category_group_enabled_) { | 1754 if (*category_group_enabled_) { |
| 1740 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1755 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
| 1741 event_handle_); | 1756 event_handle_); |
| 1742 } | 1757 } |
| 1743 } | 1758 } |
| 1744 | 1759 |
| 1745 } // namespace trace_event_internal | 1760 } // namespace trace_event_internal |
| OLD | NEW |