Index: tools/profview/profview.js |
diff --git a/tools/profview/profview.js b/tools/profview/profview.js |
index b45b4bc1d29015aed211cc0aa6dede88ca82d403..9a42a68e63d4f54f79567a1f67ff3a2a6fca2168 100644 |
--- a/tools/profview/profview.js |
+++ b/tools/profview/profview.js |
@@ -83,7 +83,7 @@ let main = { |
break; |
case "function-list": |
callTreeState.attribution = "js-exclude-bc"; |
- callTreeState.categories = "none"; |
+ callTreeState.categories = "code-type"; |
callTreeState.sort = "own-time"; |
break; |
default: |
@@ -279,9 +279,17 @@ class CallTreeView { |
sortFromId(id) { |
switch (id) { |
case "time": |
- return (c1, c2) => c2.ticks - c1.ticks; |
+ return (c1, c2) => { |
+ if (c1.ticks < c2.ticks) return 1; |
+ else if (c1.ticks > c2.ticks) return -1; |
+ return c2.ownTicks - c1.ownTicks; |
+ } |
case "own-time": |
- return (c1, c2) => c2.ownTicks - c1.ownTicks; |
+ return (c1, c2) => { |
+ if (c1.ownTicks < c2.ownTicks) return 1; |
+ else if (c1.ownTicks > c2.ownTicks) return -1; |
+ return c2.ticks - c1.ticks; |
+ } |
case "category-time": |
return (c1, c2) => { |
if (c1.type === c2.type) return c2.ticks - c1.ticks; |
@@ -383,9 +391,15 @@ class CallTreeView { |
// Collect the children, and sort them by ticks. |
let children = []; |
- for (let child in tree.children) { |
- if (tree.children[child].ticks > 0) { |
- children.push(tree.children[child]); |
+ let filter = |
+ this.filterFromFilterId(this.currentState.callTree.attribution); |
+ for (let childId in tree.children) { |
+ let child = tree.children[childId]; |
+ if (child.ticks > 0) { |
+ children.push(child); |
+ if (child.delayedExpansion) { |
+ expandTreeNode(this.currentState.file, child, filter); |
+ } |
} |
} |
children.sort(this.sortFromId(this.currentState.callTree.sort)); |
@@ -506,6 +520,7 @@ class CallTreeView { |
case "function-list": |
addOptions(this.selectAttribution, attributions, calltree.attribution); |
addOptions(this.selectCategories, [ |
+ { value : "code-type", text : "Code type" }, |
{ value : "none", text : "None" } |
], calltree.categories); |
addOptions(this.selectSort, [ |
@@ -550,11 +565,11 @@ class CallTreeView { |
this.fillSelects(newState.callTree); |
} |
- let inclusiveDisplay = (mode === "bottom-up") ? "none" : "inherit"; |
+ let ownTimeClass = (mode === "bottom-up") ? "numeric-hidden" : "numeric"; |
let ownTimeTh = $(this.treeElement.id + "-own-time-header"); |
- ownTimeTh.style.display = inclusiveDisplay; |
+ ownTimeTh.classList = ownTimeClass; |
let ownTicksTh = $(this.treeElement.id + "-own-ticks-header"); |
- ownTicksTh.style.display = inclusiveDisplay; |
+ ownTicksTh.classList = ownTimeClass; |
// Build the tree. |
let stackProcessor; |
@@ -563,8 +578,8 @@ class CallTreeView { |
stackProcessor = |
new PlainCallTreeProcessor(filter, false); |
} else if (mode === "function-list") { |
- stackProcessor = |
- new FunctionListTree(filter); |
+ stackProcessor = new FunctionListTree( |
+ filter, this.currentState.callTree.categories === "code-type"); |
} else { |
console.assert(mode === "bottom-up"); |