OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
568 }, | 568 }, |
569 | 569 |
570 /** | 570 /** |
571 * @param {string} headerName | 571 * @param {string} headerName |
572 * @param {!Array.<!WebInspector.TracingModel.Event>} events | 572 * @param {!Array.<!WebInspector.TracingModel.Event>} events |
573 */ | 573 */ |
574 _appendThreadTimelineData: function(headerName, events) | 574 _appendThreadTimelineData: function(headerName, events) |
575 { | 575 { |
576 var maxStackDepth = 0; | 576 var maxStackDepth = 0; |
577 var openEvents = []; | 577 var openEvents = []; |
578 var heights = []; | 578 var levels = []; |
579 var jsHeights = []; | |
579 var headerAppended = false; | 580 var headerAppended = false; |
580 var level = 0; | 581 var level = 0; |
582 var jsStackHeight = 0; | |
581 for (var i = 0; i < events.length; ++i) { | 583 for (var i = 0; i < events.length; ++i) { |
582 var e = events[i]; | 584 var e = events[i]; |
583 if (!e.endTime && e.phase !== WebInspector.TracingModel.Phase.Instan t) | 585 if (!e.endTime && e.phase !== WebInspector.TracingModel.Phase.Instan t) |
584 continue; | 586 continue; |
585 if (!this._isVisible(e)) | 587 if (!this._isVisible(e)) |
586 continue; | 588 continue; |
587 while (openEvents.length && openEvents.peekLast().endTime <= e.start Time) { | 589 while (openEvents.length && openEvents.peekLast().endTime <= e.start Time) { |
588 openEvents.pop(); | 590 openEvents.pop(); |
589 level = heights.pop(); | 591 level = levels.pop(); |
592 jsStackHeight = jsHeights.pop(); | |
590 } | 593 } |
591 if (!headerAppended) { | 594 if (!headerAppended) { |
592 this._appendHeaderRecord(headerName, this._currentLevel); | 595 this._appendHeaderRecord(headerName, this._currentLevel); |
593 ++level; | 596 ++level; |
594 headerAppended = true; | 597 headerAppended = true; |
595 } | 598 } |
596 var height = this._processEvent(e, this._currentLevel + level); | 599 var jsHeightDelta = this._processEvent(e, this._currentLevel + level , jsStackHeight); |
597 if (e.endTime) { | 600 if (e.endTime) { |
598 openEvents.push(e); | 601 openEvents.push(e); |
599 heights.push(level) | 602 jsHeights.push(jsStackHeight); |
603 levels.push(level); | |
600 } | 604 } |
601 level += height; | 605 level += 1 + jsHeightDelta; |
606 jsStackHeight += jsHeightDelta; | |
602 maxStackDepth = Math.max(maxStackDepth, level); | 607 maxStackDepth = Math.max(maxStackDepth, level); |
603 } | 608 } |
604 this._currentLevel += maxStackDepth; | 609 this._currentLevel += maxStackDepth; |
605 }, | 610 }, |
606 | 611 |
607 /** | 612 /** |
608 * @param {!WebInspector.TracingModel.Event} event | 613 * @param {!WebInspector.TracingModel.Event} event |
609 * @param {number} baseLevel | 614 * @param {number} level |
615 * @param {number} jsStackHeight | |
610 * @return {number} | 616 * @return {number} |
611 */ | 617 */ |
612 _processEvent: function(event, baseLevel) | 618 _processEvent: function(event, level, jsStackHeight) |
613 { | 619 { |
614 var level = baseLevel; | |
615 if (event.stackTrace && WebInspector.experimentsSettings.timelineJSCPUPr ofile.isEnabled()) { | 620 if (event.stackTrace && WebInspector.experimentsSettings.timelineJSCPUPr ofile.isEnabled()) { |
616 for (var i = event.stackTrace.length - 1; i >= 0; --i) { | 621 for (var i = event.stackTrace.length - 1; i >= jsStackHeight; --i) { |
617 var payload = /** @type {!WebInspector.TracingModel.EventPayload } */ ({ | 622 var payload = /** @type {!WebInspector.TracingModel.EventPayload } */ ({ |
618 ph: WebInspector.TracingModel.Phase.Complete, | 623 ph: WebInspector.TracingModel.Phase.Complete, |
619 cat: WebInspector.TracingModel.DevToolsMetadataEventCategory , | 624 cat: WebInspector.TracingModel.DevToolsMetadataEventCategory , |
620 name: WebInspector.TracingTimelineModel.RecordType.JSFrame, | 625 name: WebInspector.TracingTimelineModel.RecordType.JSFrame, |
621 ts: event.startTime * 1000, | 626 ts: event.startTime * 1000, |
622 dur: event.duration * 1000, | 627 dur: event.duration * 1000, |
623 args: { | 628 args: { |
624 data: event.stackTrace[i] | 629 data: event.stackTrace[i] |
625 } | 630 } |
626 }); | 631 }); |
627 var jsFrameEvent = new WebInspector.TracingModel.Event(payload, 0, event.thread); | 632 var jsFrameEvent = new WebInspector.TracingModel.Event(payload, 0, event.thread); |
628 this._appendEvent(jsFrameEvent, level++); | 633 this._appendEvent(jsFrameEvent, level++); |
629 } | 634 } |
630 } | 635 } |
631 this._appendEvent(event, level++) | 636 this._appendEvent(event, level) |
632 return level - baseLevel; | 637 return event.stackTrace ? event.stackTrace.length - jsStackHeight : 0; |
yurys
2014/07/18 11:16:19
You should always return 0 if the experiment is of
alph
2014/07/18 11:21:57
Good catch!
| |
633 }, | 638 }, |
634 | 639 |
635 /** | 640 /** |
636 * @param {!WebInspector.TracingTimelineModel.Filter} filter | 641 * @param {!WebInspector.TracingTimelineModel.Filter} filter |
637 */ | 642 */ |
638 addFilter: function(filter) | 643 addFilter: function(filter) |
639 { | 644 { |
640 this._filters.push(filter); | 645 this._filters.push(filter); |
641 }, | 646 }, |
642 | 647 |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1054 * @param {number} entryIndex | 1059 * @param {number} entryIndex |
1055 * @return {?WebInspector.TimelineSelection} | 1060 * @return {?WebInspector.TimelineSelection} |
1056 */ | 1061 */ |
1057 createSelection: function(entryIndex) { }, | 1062 createSelection: function(entryIndex) { }, |
1058 /** | 1063 /** |
1059 * @param {?WebInspector.TimelineSelection} selection | 1064 * @param {?WebInspector.TimelineSelection} selection |
1060 * @return {number} | 1065 * @return {number} |
1061 */ | 1066 */ |
1062 entryIndexForSelection: function(selection) { } | 1067 entryIndexForSelection: function(selection) { } |
1063 } | 1068 } |
OLD | NEW |