Index: tools/profile_view.js |
diff --git a/tools/profile_view.js b/tools/profile_view.js |
index cd0511f6bae9e619dcf891bffa2ee4546bea4e21..9d196a37af4c3733b0a1c27c1ecef763d8f001c6 100644 |
--- a/tools/profile_view.js |
+++ b/tools/profile_view.js |
@@ -46,15 +46,25 @@ devtools.profiler.ViewBuilder = function(samplingRate) { |
* Builds a profile view for the specified call tree. |
* |
* @param {devtools.profiler.CallTree} callTree A call tree. |
+ * @param {boolean} opt_bottomUpViewWeights Whether remapping |
+ * of self weights for a bottom up view is needed. |
*/ |
devtools.profiler.ViewBuilder.prototype.buildView = function( |
- callTree) { |
+ callTree, opt_bottomUpViewWeights) { |
var head; |
var samplingRate = this.samplingRate; |
callTree.traverse(function(node, viewParent) { |
+ var totalWeight = node.totalWeight * samplingRate; |
+ var selfWeight = node.selfWeight * samplingRate; |
+ if (opt_bottomUpViewWeights === true) { |
+ if (viewParent === head) { |
+ selfWeight = totalWeight; |
+ } else { |
+ selfWeight = 0; |
+ } |
+ } |
var viewNode = new devtools.profiler.ProfileView.Node( |
- node.label, node.totalWeight * samplingRate, |
- node.selfWeight * samplingRate, head); |
+ node.label, totalWeight, selfWeight, head); |
if (viewParent) { |
viewParent.addChild(viewNode); |
} else { |
@@ -86,21 +96,6 @@ devtools.profiler.ProfileView = function(head) { |
/** |
- * Updates references between profiles. This is needed for WebKit |
- * ProfileView. |
- */ |
-devtools.profiler.ProfileView.prototype.updateProfilesRefs = function() { |
- var profileNames = ["treeProfile", "heavyProfile", "flatProfile"]; |
- for (var i = 0; i < profileNames.length; ++i) { |
- var destProfile = this[profileNames[i]]; |
- for (var j = 0; j < profileNames.length; ++j) { |
- destProfile[profileNames[j]] = this[profileNames[j]]; |
- } |
- } |
-}; |
- |
- |
-/** |
* Sorts the profile view using the specified sort function. |
* |
* @param {function(devtools.profiler.ProfileView.Node, |
@@ -115,73 +110,6 @@ devtools.profiler.ProfileView.prototype.sort = function(sortFunc) { |
/** |
- * Sorts the profile view by self time, ascending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortSelfTimeAscending = function() { |
- this.sort(function (node1, node2) { |
- return node1.selfTime - node2.selfTime; }); |
-}; |
- |
- |
-/** |
- * Sorts the profile view by self time, descending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortSelfTimeDescending = function() { |
- this.sort(function (node1, node2) { |
- return node2.selfTime - node1.selfTime; }); |
-}; |
- |
- |
-/** |
- * Sorts the profile view by total time, ascending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortTotalTimeAscending = function() { |
- this.sort(function (node1, node2) { |
- return node1.totalTime - node2.totalTime; }); |
-}; |
- |
- |
-/** |
- * Sorts the profile view by total time, descending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortTotalTimeDescending = function() { |
- this.sort(function (node1, node2) { |
- return node2.totalTime - node1.totalTime; }); |
-}; |
- |
- |
-/** |
- * String comparator compatible with Array.sort requirements. |
- * |
- * @param {string} s1 First string. |
- * @param {string} s2 Second string. |
- */ |
-devtools.profiler.ProfileView.compareStrings = function(s1, s2) { |
- return s1 < s2 ? -1 : (s1 > s2 ? 1 : 0); |
-}; |
- |
- |
-/** |
- * Sorts the profile view by function name, ascending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortFunctionNameAscending = function() { |
- this.sort(function (node1, node2) { |
- return devtools.profiler.ProfileView.compareStrings( |
- node1.functionName, node2.functionName); }); |
-}; |
- |
- |
-/** |
- * Sorts the profile view by function name, descending. |
- */ |
-devtools.profiler.ProfileView.prototype.sortFunctionNameDescending = function() { |
- this.sort(function (node1, node2) { |
- return devtools.profiler.ProfileView.compareStrings( |
- node2.functionName, node1.functionName); }); |
-}; |
- |
- |
-/** |
* Traverses profile view nodes in preorder. |
* |
* @param {function(devtools.profiler.ProfileView.Node)} f Visitor function. |