Changeset 106665 in webkit
- Timestamp:
- Feb 3, 2012 8:50:16 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r106664 r106665 1 2012-02-03 Alexei Filippov <alexeif@chromium.org> 2 3 Web Inspector: Retained size for classes is too conservative in heap profiler 4 https://bugs.webkit.org/show_bug.cgi?id=77726 5 6 Reviewed by Yury Semikhatsky. 7 8 Makes retained size of all objects of particular class show correct value 9 in Summary view of heap profiler. 10 11 * inspector/front-end/DetailedHeapshotGridNodes.js: 12 (WebInspector.HeapSnapshotConstructorNode.prototype.get data): 13 * inspector/front-end/HeapSnapshot.js: 14 (WebInspector.HeapSnapshot.prototype._buildAggregates): 15 (WebInspector.HeapSnapshot.prototype._buildAggregates.forDominatedNodes): 16 1 17 2012-02-02 Alexander Pavlov <apavlov@chromium.org> 2 18 -
trunk/Source/WebCore/inspector/front-end/DetailedHeapshotGridNodes.js
r106633 r106665 608 608 data["count"] = Number.withThousandsSeparator(this._count); 609 609 data["shallowSize"] = Number.withThousandsSeparator(this._shallowSize); 610 data["retainedSize"] = Number.withThousandsSeparator(this._retainedSize) + "+";610 data["retainedSize"] = Number.withThousandsSeparator(this._retainedSize); 611 611 if (view._showPercentage) { 612 612 data["shallowSize-percent"] = this._toPercentString(this._shallowSizePercent); -
trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js
r105865 r106665 916 916 _buildAggregates: function(filter) 917 917 { 918 function shouldSkip(node) 919 { 920 if (filter && !filter(node)) 921 return true; 922 if (node.type !== "native" && node.selfSize === 0) 923 return true; 924 var className = node.className; 925 if (className === "Document DOM tree") 926 return true; 927 if (className === "Detached DOM tree") 928 return true; 929 return false; 930 } 931 918 932 var aggregates = {}; 919 933 for (var iter = this._allNodes; iter.hasNext(); iter.next()) { 920 934 var node = iter.node; 921 if (filter && !filter(node)) 922 continue; 923 if (node.type !== "native" && node.selfSize === 0) 935 if (shouldSkip(node)) 924 936 continue; 925 937 var className = node.className; 926 if (className === "Document DOM tree")927 continue;928 if (className === "Detached DOM tree")929 continue;930 938 var nameMatters = node.type === "object" || node.type === "native"; 931 939 if (!aggregates.hasOwnProperty(className)) … … 934 942 ++clss.count; 935 943 clss.self += node.selfSize; 936 if (node.retainedSize > clss.maxRet)937 clss.maxRet = node.retainedSize;938 944 clss.idxs.push(node.nodeIndex); 939 945 } 946 947 // Recursively visit dominators tree and sum up retained sizes 948 // of topmost objects in each class. 949 // This gives us retained sizes for classes. 950 var seenClasses = {}; 951 var snapshot = this; 952 function forDominatedNodes(nodeIndex) 953 { 954 var node = new WebInspector.HeapSnapshotNode(snapshot, nodeIndex); 955 var className = node.className; 956 var seen = !!seenClasses[className]; 957 if (!seen && className in aggregates && !shouldSkip(node)) { 958 aggregates[className].maxRet += node.retainedSize; 959 seenClasses[className] = true; 960 } 961 var dominatedNodes = snapshot._dominatedNodesOfNode(node); 962 for (var i = 0; i < dominatedNodes.length; i++) 963 forDominatedNodes(dominatedNodes.item(i)); 964 seenClasses[className] = seen; 965 } 966 forDominatedNodes(this._rootNodeIndex); 967 940 968 // Shave off provisionally allocated space. 941 969 for (var className in aggregates)
Note: See TracChangeset
for help on using the changeset viewer.