Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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.h" | 5 #include "base/debug/trace_event.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
| 10 #include "base/debug/trace_event_win.h" | 10 #include "base/debug/trace_event_win.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 103 } | 103 } |
| 104 | 104 |
| 105 //////////////////////////////////////////////////////////////////////////////// | 105 //////////////////////////////////////////////////////////////////////////////// |
| 106 // | 106 // |
| 107 // TraceEvent | 107 // TraceEvent |
| 108 // | 108 // |
| 109 //////////////////////////////////////////////////////////////////////////////// | 109 //////////////////////////////////////////////////////////////////////////////// |
| 110 | 110 |
| 111 namespace { | 111 namespace { |
| 112 | 112 |
| 113 const char* GetPhaseStr(TraceEventPhase phase) { | |
| 114 switch(phase) { | |
| 115 case TRACE_EVENT_PHASE_BEGIN: | |
| 116 return "B"; | |
| 117 case TRACE_EVENT_PHASE_INSTANT: | |
| 118 return "I"; | |
| 119 case TRACE_EVENT_PHASE_END: | |
| 120 return "E"; | |
| 121 case TRACE_EVENT_PHASE_METADATA: | |
| 122 return "M"; | |
| 123 default: | |
| 124 NOTREACHED() << "Invalid phase argument"; | |
| 125 return "?"; | |
| 126 } | |
| 127 } | |
| 128 | |
| 129 size_t GetAllocLength(const char* str) { return str ? strlen(str) + 1 : 0; } | 113 size_t GetAllocLength(const char* str) { return str ? strlen(str) + 1 : 0; } |
| 130 | 114 |
| 131 // Copies |*member| into |*buffer|, sets |*member| to point to this new | 115 // Copies |*member| into |*buffer|, sets |*member| to point to this new |
| 132 // location, and then advances |*buffer| by the amount written. | 116 // location, and then advances |*buffer| by the amount written. |
| 133 void CopyTraceEventParameter(char** buffer, | 117 void CopyTraceEventParameter(char** buffer, |
| 134 const char** member, | 118 const char** member, |
| 135 const char* end) { | 119 const char* end) { |
| 136 if (*member) { | 120 if (*member) { |
| 137 size_t written = strlcpy(*buffer, *member, end - *buffer) + 1; | 121 size_t written = strlcpy(*buffer, *member, end - *buffer) + 1; |
| 138 DCHECK_LE(static_cast<int>(written), end - *buffer); | 122 DCHECK_LE(static_cast<int>(written), end - *buffer); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 205 CopyTraceEventParameter(&ptr, arg_values_[0].as_assignable_string(), end); | 189 CopyTraceEventParameter(&ptr, arg_values_[0].as_assignable_string(), end); |
| 206 if (arg2_is_copy) | 190 if (arg2_is_copy) |
| 207 CopyTraceEventParameter(&ptr, arg_values_[1].as_assignable_string(), end); | 191 CopyTraceEventParameter(&ptr, arg_values_[1].as_assignable_string(), end); |
| 208 DCHECK_EQ(end, ptr) << "Overrun by " << ptr - end; | 192 DCHECK_EQ(end, ptr) << "Overrun by " << ptr - end; |
| 209 } | 193 } |
| 210 } | 194 } |
| 211 | 195 |
| 212 TraceEvent::~TraceEvent() { | 196 TraceEvent::~TraceEvent() { |
| 213 } | 197 } |
| 214 | 198 |
| 199 const char* TraceEvent::GetPhaseStr(TraceEventPhase phase) { | |
| 200 switch(phase) { | |
| 201 case TRACE_EVENT_PHASE_BEGIN: | |
| 202 return "B"; | |
| 203 case TRACE_EVENT_PHASE_INSTANT: | |
| 204 return "I"; | |
| 205 case TRACE_EVENT_PHASE_END: | |
| 206 return "E"; | |
| 207 case TRACE_EVENT_PHASE_METADATA: | |
| 208 return "M"; | |
| 209 default: | |
| 210 NOTREACHED() << "Invalid phase argument"; | |
| 211 return "?"; | |
| 212 } | |
| 213 } | |
| 214 | |
| 215 TraceEventPhase TraceEvent::GetPhase(const char* phase) { | |
| 216 switch(*phase) { | |
| 217 case 'B': | |
| 218 return TRACE_EVENT_PHASE_BEGIN; | |
| 219 case 'I': | |
| 220 return TRACE_EVENT_PHASE_INSTANT; | |
| 221 case 'E': | |
| 222 return TRACE_EVENT_PHASE_END; | |
| 223 case 'M': | |
| 224 return TRACE_EVENT_PHASE_METADATA; | |
| 225 default: | |
| 226 return TRACE_EVENT_PHASE_METADATA; | |
|
nduca
2011/10/11 20:33:37
is this right? 'X'->metdata? X->UNKNOWN and DCHECK
jbates
2011/10/12 22:35:20
Done.
| |
| 227 } | |
| 228 } | |
| 229 | |
| 215 void TraceEvent::AppendEventsAsJSON(const std::vector<TraceEvent>& events, | 230 void TraceEvent::AppendEventsAsJSON(const std::vector<TraceEvent>& events, |
| 216 size_t start, | 231 size_t start, |
| 217 size_t count, | 232 size_t count, |
| 218 std::string* out) { | 233 std::string* out) { |
| 219 *out += "["; | 234 *out += "["; |
| 220 for (size_t i = 0; i < count && start + i < events.size(); ++i) { | 235 for (size_t i = 0; i < count && start + i < events.size(); ++i) { |
| 221 if (i > 0) | 236 if (i > 0) |
| 222 *out += ","; | 237 *out += ","; |
| 223 events[i + start].AppendAsJSON(out); | 238 events[i + start].AppendAsJSON(out); |
| 224 } | 239 } |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 593 NULL, 0, NULL, 0, | 608 NULL, 0, NULL, 0, |
| 594 p_data_->threshold_begin_id, p_data_->threshold, | 609 p_data_->threshold_begin_id, p_data_->threshold, |
| 595 TraceLog::EVENT_FLAG_NONE); | 610 TraceLog::EVENT_FLAG_NONE); |
| 596 } | 611 } |
| 597 } | 612 } |
| 598 | 613 |
| 599 } // namespace internal | 614 } // namespace internal |
| 600 | 615 |
| 601 } // namespace debug | 616 } // namespace debug |
| 602 } // namespace base | 617 } // namespace base |
| OLD | NEW |