Chromium Code Reviews| Index: Source/devtools/front_end/timeline/TracingTimelineModel.js |
| diff --git a/Source/devtools/front_end/timeline/TracingTimelineModel.js b/Source/devtools/front_end/timeline/TracingTimelineModel.js |
| index ba539129b15c658676489cf81855768ee29cb4bc..1abcfd35828ad8e9f5fa3815af574b746de56d76 100644 |
| --- a/Source/devtools/front_end/timeline/TracingTimelineModel.js |
| +++ b/Source/devtools/front_end/timeline/TracingTimelineModel.js |
| @@ -179,6 +179,8 @@ WebInspector.TracingTimelineModel.prototype = { |
| this._resetProcessingState(); |
| this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compareStartTime); |
| + if (WebInspector.experimentsSettings.timelineJSCPUProfile.isEnabled()) |
| + this._injectJSFrameEvents(); |
| this._buildTimelineRecords(); |
| this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingStopped); |
| @@ -217,6 +219,14 @@ WebInspector.TracingTimelineModel.prototype = { |
| }, |
| /** |
| + * @param {!Array.<!WebInspector.TracingModel.Event>} events |
| + */ |
| + _setMainThreadEvents: function(events) |
| + { |
| + return this._virtualThreads[WebInspector.TimelineModel.MainThreadName] = events; |
| + }, |
| + |
| + /** |
| * @return {!Object.<string, !Array.<!WebInspector.TracingModel.Event>>} |
| */ |
| virtualThreads: function() |
| @@ -231,6 +241,33 @@ WebInspector.TracingTimelineModel.prototype = { |
| WebInspector.TimelineModel.prototype.reset.call(this); |
| }, |
| + _injectJSFrameEvents: function() |
| + { |
| + var jsFrameEvents = []; |
| + var mainThreadEvents = this.mainThreadEvents(); |
| + for (var i = 0; i < mainThreadEvents.length; ++i) { |
| + var event = mainThreadEvents[i]; |
| + if (!event.stackTrace) |
| + continue; |
| + for (var j = event.stackTrace.length - 1; j >= 0; --j) { |
| + var payload = /** @type {!WebInspector.TracingModel.EventPayload} */ ({ |
| + ph: WebInspector.TracingModel.Phase.Complete, |
| + cat: WebInspector.TracingModel.DevToolsMetadataEventCategory, |
| + name: WebInspector.TracingTimelineModel.RecordType.JSFrame, |
|
yurys
2014/07/17 14:32:40
I'd rather add this on the flame chart directly wi
alph
2014/07/17 15:48:43
Done.
|
| + ts: event.startTime * 1000, |
| + dur: event.duration * 1000, |
| + args: { |
| + data: event.stackTrace[j] |
| + } |
| + }); |
| + var jsFrameEvent = new WebInspector.TracingModel.Event(payload, 0, event.thread); |
| + jsFrameEvents.push(jsFrameEvent); |
| + } |
| + } |
| + this._setMainThreadEvents(jsFrameEvents.mergeOrdered(mainThreadEvents, WebInspector.TracingModel.Event.orderedCompareStartTime)); |
| + this._inspectedTargetEvents = jsFrameEvents.mergeOrdered(this._inspectedTargetEvents, WebInspector.TracingModel.Event.orderedCompareStartTime); |
| + }, |
| + |
| _buildTimelineRecords: function() |
| { |
| var recordStack = []; |