OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/debug/trace_event_impl.h" | 5 #include "base/debug/trace_event_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1205 process_sort_index_(0), | 1205 process_sort_index_(0), |
1206 process_id_hash_(0), | 1206 process_id_hash_(0), |
1207 process_id_(0), | 1207 process_id_(0), |
1208 watch_category_(0), | 1208 watch_category_(0), |
1209 trace_options_(kInternalRecordUntilFull), | 1209 trace_options_(kInternalRecordUntilFull), |
1210 sampling_thread_handle_(0), | 1210 sampling_thread_handle_(0), |
1211 category_filter_(CategoryFilter::kDefaultCategoryFilterString), | 1211 category_filter_(CategoryFilter::kDefaultCategoryFilterString), |
1212 event_callback_category_filter_( | 1212 event_callback_category_filter_( |
1213 CategoryFilter::kDefaultCategoryFilterString), | 1213 CategoryFilter::kDefaultCategoryFilterString), |
1214 thread_shared_chunk_index_(0), | 1214 thread_shared_chunk_index_(0), |
1215 generation_(0) { | 1215 generation_(0), |
1216 weak_ptr_factory_(this) { | |
1216 // Trace is enabled or disabled on one thread while other threads are | 1217 // Trace is enabled or disabled on one thread while other threads are |
1217 // accessing the enabled flag. We don't care whether edge-case events are | 1218 // accessing the enabled flag. We don't care whether edge-case events are |
1218 // traced or not, so we allow races on the enabled flag to keep the trace | 1219 // traced or not, so we allow races on the enabled flag to keep the trace |
1219 // macros fast. | 1220 // macros fast. |
1220 // TODO(jbates): ANNOTATE_BENIGN_RACE_SIZED crashes windows TSAN bots: | 1221 // TODO(jbates): ANNOTATE_BENIGN_RACE_SIZED crashes windows TSAN bots: |
1221 // ANNOTATE_BENIGN_RACE_SIZED(g_category_group_enabled, | 1222 // ANNOTATE_BENIGN_RACE_SIZED(g_category_group_enabled, |
1222 // sizeof(g_category_group_enabled), | 1223 // sizeof(g_category_group_enabled), |
1223 // "trace_event category enabled"); | 1224 // "trace_event category enabled"); |
1224 for (int i = 0; i < MAX_CATEGORY_GROUPS; ++i) { | 1225 for (int i = 0; i < MAX_CATEGORY_GROUPS; ++i) { |
1225 ANNOTATE_BENIGN_RACE(&g_category_group_enabled[i], | 1226 ANNOTATE_BENIGN_RACE(&g_category_group_enabled[i], |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1720 } | 1721 } |
1721 } | 1722 } |
1722 } | 1723 } |
1723 | 1724 |
1724 if (thread_message_loop_task_runners.size()) { | 1725 if (thread_message_loop_task_runners.size()) { |
1725 for (size_t i = 0; i < thread_message_loop_task_runners.size(); ++i) { | 1726 for (size_t i = 0; i < thread_message_loop_task_runners.size(); ++i) { |
1726 thread_message_loop_task_runners[i]->PostTask( | 1727 thread_message_loop_task_runners[i]->PostTask( |
1727 FROM_HERE, | 1728 FROM_HERE, |
1728 Bind(&TraceLog::FlushCurrentThread, Unretained(this), generation)); | 1729 Bind(&TraceLog::FlushCurrentThread, Unretained(this), generation)); |
1729 } | 1730 } |
1730 flush_message_loop_proxy_->PostDelayedTask( | 1731 flush_message_loop_proxy_->PostDelayedTask( |
mmenke
2014/09/12 17:47:46
The weak pointer factory can only vend weak points
| |
1731 FROM_HERE, | 1732 FROM_HERE, |
1732 Bind(&TraceLog::OnFlushTimeout, Unretained(this), generation), | 1733 Bind(&TraceLog::OnFlushTimeout, |
1734 weak_ptr_factory_.GetWeakPtr(), | |
1735 generation), | |
1733 TimeDelta::FromMilliseconds(kThreadFlushTimeoutMs)); | 1736 TimeDelta::FromMilliseconds(kThreadFlushTimeoutMs)); |
1734 return; | 1737 return; |
1735 } | 1738 } |
1736 | 1739 |
1737 FinishFlush(generation); | 1740 FinishFlush(generation); |
1738 } | 1741 } |
1739 | 1742 |
1740 void TraceLog::ConvertTraceEventsToTraceFormat( | 1743 void TraceLog::ConvertTraceEventsToTraceFormat( |
1741 scoped_ptr<TraceBuffer> logged_events, | 1744 scoped_ptr<TraceBuffer> logged_events, |
1742 const TraceLog::OutputCallback& flush_output_callback) { | 1745 const TraceLog::OutputCallback& flush_output_callback) { |
(...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2571 } | 2574 } |
2572 | 2575 |
2573 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 2576 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
2574 if (*category_group_enabled_) { | 2577 if (*category_group_enabled_) { |
2575 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, | 2578 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, |
2576 name_, event_handle_); | 2579 name_, event_handle_); |
2577 } | 2580 } |
2578 } | 2581 } |
2579 | 2582 |
2580 } // namespace trace_event_internal | 2583 } // namespace trace_event_internal |
OLD | NEW |