| 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 | 5 |
| 6 /** | 6 /** |
| 7 * @fileoverview TimelineModel is a parsed representation of the | 7 * @fileoverview TimelineModel is a parsed representation of the |
| 8 * TraceEvents obtained from base/trace_event in which the begin-end | 8 * TraceEvents obtained from base/trace_event in which the begin-end |
| 9 * tokens are converted into a hierarchy of processes, threads, | 9 * tokens are converted into a hierarchy of processes, threads, |
| 10 * subrows, and slices. | 10 * subrows, and slices. |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 this.maxTimestamp = undefined; | 113 this.maxTimestamp = undefined; |
| 114 } | 114 } |
| 115 } | 115 } |
| 116 | 116 |
| 117 }; | 117 }; |
| 118 | 118 |
| 119 /** | 119 /** |
| 120 * Comparison between threads that orders first by pid, | 120 * Comparison between threads that orders first by pid, |
| 121 * then by names, then by tid. | 121 * then by names, then by tid. |
| 122 */ | 122 */ |
| 123 TimelineThread.compare = function(x,y) { | 123 TimelineThread.compare = function(x, y) { |
| 124 if(x.parent.pid != y.parent.pid) { | 124 if (x.parent.pid != y.parent.pid) { |
| 125 return x.parent.pid - y.parent.pid; | 125 return x.parent.pid - y.parent.pid; |
| 126 } | 126 } |
| 127 | 127 |
| 128 if (x.name && y.name) { | 128 if (x.name && y.name) { |
| 129 var tmp = x.name.localeCompare(y.name); | 129 var tmp = x.name.localeCompare(y.name); |
| 130 if (tmp == 0) | 130 if (tmp == 0) |
| 131 return x.tid - y.tid; | 131 return x.tid - y.tid; |
| 132 return tmp; | 132 return tmp; |
| 133 } else if (x.name) { | 133 } else if (x.name) { |
| 134 return -1; | 134 return -1; |
| 135 } else if (y.name){ | 135 } else if (y.name) { |
| 136 return 1; | 136 return 1; |
| 137 } else { | 137 } else { |
| 138 return x.tid - y.tid; | 138 return x.tid - y.tid; |
| 139 } | 139 } |
| 140 }; | 140 }; |
| 141 | 141 |
| 142 | 142 |
| 143 /** | 143 /** |
| 144 * The TimelineProcess represents a single process in the | 144 * The TimelineProcess represents a single process in the |
| 145 * trace. Right now, we keep this around purely for bookkeeping | 145 * trace. Right now, we keep this around purely for bookkeeping |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 processEnd(state, event); | 297 processEnd(state, event); |
| 298 } else if (event.ph == 'M') { | 298 } else if (event.ph == 'M') { |
| 299 if (event.name == 'thread_name') { | 299 if (event.name == 'thread_name') { |
| 300 var thread = this.getProcess(event.pid).getThread(event.tid); | 300 var thread = this.getProcess(event.pid).getThread(event.tid); |
| 301 thread.name = event.args.name; | 301 thread.name = event.args.name; |
| 302 } else { | 302 } else { |
| 303 this.importErrors.push('Unrecognized metadata name: ' + event.name); | 303 this.importErrors.push('Unrecognized metadata name: ' + event.name); |
| 304 } | 304 } |
| 305 } else { | 305 } else { |
| 306 this.importErrors.push('Unrecognized event phase: ' + event.ph + | 306 this.importErrors.push('Unrecognized event phase: ' + event.ph + |
| 307 '(' + event.name + ')'); | 307 '(' + event.name + ')'); |
| 308 } | 308 } |
| 309 } | 309 } |
| 310 this.pruneEmptyThreads(); | 310 this.pruneEmptyThreads(); |
| 311 this.updateBounds(); | 311 this.updateBounds(); |
| 312 | 312 |
| 313 // Add end events for any events that are still on the stack. These | 313 // Add end events for any events that are still on the stack. These |
| 314 // are events that were still open when trace was ended, and can often | 314 // are events that were still open when trace was ended, and can often |
| 315 // indicate deadlock behavior. | 315 // indicate deadlock behavior. |
| 316 for (var ptid in threadStateByPTID) { | 316 for (var ptid in threadStateByPTID) { |
| 317 var state = threadStateByPTID[ptid]; | 317 var state = threadStateByPTID[ptid]; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 | 410 |
| 411 }; | 411 }; |
| 412 | 412 |
| 413 return { | 413 return { |
| 414 TimelineSlice: TimelineSlice, | 414 TimelineSlice: TimelineSlice, |
| 415 TimelineThread: TimelineThread, | 415 TimelineThread: TimelineThread, |
| 416 TimelineProcess: TimelineProcess, | 416 TimelineProcess: TimelineProcess, |
| 417 TimelineModel: TimelineModel | 417 TimelineModel: TimelineModel |
| 418 }; | 418 }; |
| 419 }); | 419 }); |
| OLD | NEW |