Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Side by Side Diff: Source/devtools/front_end/HeapSnapshot.js

Issue 205953002: Revert of Remove WebInspector.HeapSnapshotArraySlice (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 12 matching lines...) Expand all
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 /** 31 /**
32 * @constructor 32 * @constructor
33 * @param {!WebInspector.HeapSnapshot} snapshot 33 * @param {!Uint32Array} array
34 * @param {!Uint32Array} edges 34 * @param {number} start
35 * @param {number} end
36 */
37 WebInspector.HeapSnapshotArraySlice = function(array, start, end)
38 {
39 this._array = array;
40 this._start = start;
41 this.length = end - start;
42 }
43
44 WebInspector.HeapSnapshotArraySlice.prototype = {
45 /**
46 * @param {number} index
47 * @return {number}
48 */
49 item: function(index)
50 {
51 return this._array[this._start + index];
52 },
53
54 /**
55 * @param {number} start
56 * @param {number=} end
57 * @return {!Uint32Array}
58 */
59 slice: function(start, end)
60 {
61 if (typeof end === "undefined")
62 end = this.length;
63 return this._array.subarray(this._start + start, this._start + end);
64 }
65 }
66
67 /**
68 * @constructor
35 * @param {number=} edgeIndex 69 * @param {number=} edgeIndex
36 */ 70 */
37 WebInspector.HeapSnapshotEdge = function(snapshot, edges, edgeIndex) 71 WebInspector.HeapSnapshotEdge = function(snapshot, edges, edgeIndex)
38 { 72 {
39 this._snapshot = snapshot; 73 this._snapshot = snapshot;
40 this._edges = edges; 74 this._edges = edges;
41 this.edgeIndex = edgeIndex || 0; 75 this.edgeIndex = edgeIndex || 0;
42 } 76 }
43 77
44 /** 78 /**
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 node: function() 122 node: function()
89 { 123 {
90 return this._snapshot.createNode(this.nodeIndex()); 124 return this._snapshot.createNode(this.nodeIndex());
91 }, 125 },
92 126
93 /** 127 /**
94 * @return {number} 128 * @return {number}
95 */ 129 */
96 nodeIndex: function() 130 nodeIndex: function()
97 { 131 {
98 return this._edges[this.edgeIndex + this._snapshot._edgeToNodeOffset]; 132 return this._edges.item(this.edgeIndex + this._snapshot._edgeToNodeOffse t);
99 }, 133 },
100 134
101 /** 135 /**
136 * @return {!Array.<number>}
137 */
138 rawEdges: function()
139 {
140 return this._edges;
141 },
142
143 /**
102 * @return {string} 144 * @return {string}
103 */ 145 */
104 toString: function() 146 toString: function()
105 { 147 {
106 return "HeapSnapshotEdge: " + this.name(); 148 return "HeapSnapshotEdge: " + this.name();
107 }, 149 },
108 150
109 /** 151 /**
110 * @return {string} 152 * @return {string}
111 */ 153 */
112 type: function() 154 type: function()
113 { 155 {
114 return this._snapshot._edgeTypes[this._type()]; 156 return this._snapshot._edgeTypes[this._type()];
115 }, 157 },
116 158
117 /** 159 /**
118 * @return {!WebInspector.HeapSnapshotEdge.Serialized} 160 * @return {!WebInspector.HeapSnapshotEdge.Serialized}
119 */ 161 */
120 serialize: function() 162 serialize: function()
121 { 163 {
122 var node = this.node(); 164 var node = this.node();
123 return new WebInspector.HeapSnapshotEdge.Serialized(this.name(), node.se rialize(), this.nodeIndex(), this.type(), node.distance()); 165 return new WebInspector.HeapSnapshotEdge.Serialized(this.name(), node.se rialize(), this.nodeIndex(), this.type(), node.distance());
124 }, 166 },
125 167
126 _type: function() 168 _type: function()
127 { 169 {
128 return this._edges[this.edgeIndex + this._snapshot._edgeTypeOffset]; 170 return this._edges.item(this.edgeIndex + this._snapshot._edgeTypeOffset) ;
129 } 171 }
130 }; 172 };
131 173
132 /** 174 /**
133 * @constructor 175 * @constructor
134 */ 176 */
135 WebInspector.HeapSnapshotEdgeIterator = function(edge) 177 WebInspector.HeapSnapshotEdgeIterator = function(edge)
136 { 178 {
137 this.edge = edge; 179 this.edge = edge;
138 } 180 }
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 516
475 /** 517 /**
476 * @return {string} 518 * @return {string}
477 */ 519 */
478 name: function() 520 name: function()
479 { 521 {
480 return this._snapshot._strings[this._name()]; 522 return this._snapshot._strings[this._name()];
481 }, 523 },
482 524
483 /** 525 /**
484 * @return {!Uint32Array} 526 * @return {!WebInspector.HeapSnapshotArraySlice}
485 */ 527 */
486 rawEdges: function() 528 rawEdges: function()
487 { 529 {
488 return this._snapshot._containmentEdges.subarray(this._edgeIndexesStart( ), this._edgeIndexesEnd()); 530 return new WebInspector.HeapSnapshotArraySlice(this._snapshot._containme ntEdges, this._edgeIndexesStart(), this._edgeIndexesEnd());
489 }, 531 },
490 532
491 /** 533 /**
492 * @return {number} 534 * @return {number}
493 */ 535 */
494 retainedSize: function() 536 retainedSize: function()
495 { 537 {
496 return this._snapshot._retainedSizes[this._ordinal()]; 538 return this._snapshot._retainedSizes[this._ordinal()];
497 }, 539 },
498 540
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 return this.rootNode().retainedSize(); 991 return this.rootNode().retainedSize();
950 }, 992 },
951 993
952 _getDominatedIndex: function(nodeIndex) 994 _getDominatedIndex: function(nodeIndex)
953 { 995 {
954 if (nodeIndex % this._nodeFieldCount) 996 if (nodeIndex % this._nodeFieldCount)
955 throw new Error("Invalid nodeIndex: " + nodeIndex); 997 throw new Error("Invalid nodeIndex: " + nodeIndex);
956 return this._firstDominatedNodeIndex[nodeIndex / this._nodeFieldCount]; 998 return this._firstDominatedNodeIndex[nodeIndex / this._nodeFieldCount];
957 }, 999 },
958 1000
959 /**
960 * @param {!WebInspector.HeapSnapshotNode} node
961 * @return {!Uint32Array}
962 */
963 _dominatedNodesOfNode: function(node) 1001 _dominatedNodesOfNode: function(node)
964 { 1002 {
965 var dominatedIndexFrom = this._getDominatedIndex(node.nodeIndex); 1003 var dominatedIndexFrom = this._getDominatedIndex(node.nodeIndex);
966 var dominatedIndexTo = this._getDominatedIndex(node._nextNodeIndex()); 1004 var dominatedIndexTo = this._getDominatedIndex(node._nextNodeIndex());
967 return this._dominatedNodes.subarray(dominatedIndexFrom, dominatedIndexT o); 1005 return new WebInspector.HeapSnapshotArraySlice(this._dominatedNodes, dom inatedIndexFrom, dominatedIndexTo);
968 }, 1006 },
969 1007
970 /** 1008 /**
971 * @param {!WebInspector.HeapSnapshotCommon.NodeFilter} nodeFilter 1009 * @param {!WebInspector.HeapSnapshotCommon.NodeFilter} nodeFilter
972 * @return {!Object.<string, !WebInspector.HeapSnapshotCommon.Aggregate>} 1010 * @return {!Object.<string, !WebInspector.HeapSnapshotCommon.Aggregate>}
973 */ 1011 */
974 aggregatesWithFilter: function(nodeFilter) 1012 aggregatesWithFilter: function(nodeFilter)
975 { 1013 {
976 var minNodeId = nodeFilter.minNodeId; 1014 var minNodeId = nodeFilter.minNodeId;
977 var maxNodeId = nodeFilter.maxNodeId; 1015 var maxNodeId = nodeFilter.maxNodeId;
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 * @return {!WebInspector.HeapSnapshotCommon.StaticData} 1923 * @return {!WebInspector.HeapSnapshotCommon.StaticData}
1886 */ 1924 */
1887 updateStaticData: function() 1925 updateStaticData: function()
1888 { 1926 {
1889 return new WebInspector.HeapSnapshotCommon.StaticData(this.nodeCount, th is._rootNodeIndex, this.totalSize, this._maxJsNodeId()); 1927 return new WebInspector.HeapSnapshotCommon.StaticData(this.nodeCount, th is._rootNodeIndex, this.totalSize, this._maxJsNodeId());
1890 } 1928 }
1891 }; 1929 };
1892 1930
1893 /** 1931 /**
1894 * @constructor 1932 * @constructor
1895 * @param {(!Array.<number>|!Uint32Array)=} unfilteredIterationOrder 1933 * @param {!Array.<number>=} unfilteredIterationOrder
1896 */ 1934 */
1897 WebInspector.HeapSnapshotFilteredOrderedIterator = function(iterator, filter, un filteredIterationOrder) 1935 WebInspector.HeapSnapshotFilteredOrderedIterator = function(iterator, filter, un filteredIterationOrder)
1898 { 1936 {
1899 this._filter = filter; 1937 this._filter = filter;
1900 this._iterator = iterator; 1938 this._iterator = iterator;
1901 this._unfilteredIterationOrder = unfilteredIterationOrder; 1939 this._unfilteredIterationOrder = unfilteredIterationOrder;
1902 /** @type {?Array.<number>|?Uint32Array} */
1903 this._iterationOrder = null; 1940 this._iterationOrder = null;
1904 this._position = 0; 1941 this._position = 0;
1905 this._currentComparator = null; 1942 this._currentComparator = null;
1906 this._sortedPrefixLength = 0; 1943 this._sortedPrefixLength = 0;
1907 this._sortedSuffixLength = 0; 1944 this._sortedSuffixLength = 0;
1908 } 1945 }
1909 1946
1910 WebInspector.HeapSnapshotFilteredOrderedIterator.prototype = { 1947 WebInspector.HeapSnapshotFilteredOrderedIterator.prototype = {
1911 _createIterationOrder: function() 1948 _createIterationOrder: function()
1912 { 1949 {
1913 if (this._iterationOrder) 1950 if (this._iterationOrder)
1914 return; 1951 return;
1915 if (this._unfilteredIterationOrder && !this._filter) { 1952 if (this._unfilteredIterationOrder && !this._filter) {
1916 this._iterationOrder = this._unfilteredIterationOrder; 1953 this._iterationOrder = this._unfilteredIterationOrder.slice(0);
1917 this._unfilteredIterationOrder = null; 1954 this._unfilteredIterationOrder = null;
1918 return; 1955 return;
1919 } 1956 }
1920 this._iterationOrder = []; 1957 this._iterationOrder = [];
1921 var iterator = this._iterator; 1958 var iterator = this._iterator;
1922 if (!this._unfilteredIterationOrder && !this._filter) { 1959 if (!this._unfilteredIterationOrder && !this._filter) {
1923 for (iterator.rewind(); iterator.hasNext(); iterator.next()) 1960 for (iterator.rewind(); iterator.hasNext(); iterator.next())
1924 this._iterationOrder.push(iterator.index()); 1961 this._iterationOrder.push(iterator.index());
1925 } else if (!this._unfilteredIterationOrder) { 1962 } else if (!this._unfilteredIterationOrder) {
1926 for (iterator.rewind(); iterator.hasNext(); iterator.next()) { 1963 for (iterator.rewind(); iterator.hasNext(); iterator.next()) {
1927 if (this._filter(iterator.item())) 1964 if (this._filter(iterator.item()))
1928 this._iterationOrder.push(iterator.index()); 1965 this._iterationOrder.push(iterator.index());
1929 } 1966 }
1930 } else { 1967 } else {
1931 var order = this._unfilteredIterationOrder; 1968 var order = this._unfilteredIterationOrder.constructor === Array ?
1969 this._unfilteredIterationOrder : this._unfilteredIterationOrder. slice(0);
1932 for (var i = 0, l = order.length; i < l; ++i) { 1970 for (var i = 0, l = order.length; i < l; ++i) {
1933 iterator.setIndex(order[i]); 1971 iterator.setIndex(order[i]);
1934 if (this._filter(iterator.item())) 1972 if (this._filter(iterator.item()))
1935 this._iterationOrder.push(iterator.index()); 1973 this._iterationOrder.push(iterator.index());
1936 } 1974 }
1937 this._unfilteredIterationOrder = null; 1975 this._unfilteredIterationOrder = null;
1938 } 1976 }
1939 }, 1977 },
1940 1978
1941 rewind: function() 1979 rewind: function()
(...skipping 20 matching lines...) Expand all
1962 return !this._unfilteredIterationOrder.length; 2000 return !this._unfilteredIterationOrder.length;
1963 var iterator = this._iterator; 2001 var iterator = this._iterator;
1964 if (!this._unfilteredIterationOrder && !this._filter) { 2002 if (!this._unfilteredIterationOrder && !this._filter) {
1965 iterator.rewind(); 2003 iterator.rewind();
1966 return !iterator.hasNext(); 2004 return !iterator.hasNext();
1967 } else if (!this._unfilteredIterationOrder) { 2005 } else if (!this._unfilteredIterationOrder) {
1968 for (iterator.rewind(); iterator.hasNext(); iterator.next()) 2006 for (iterator.rewind(); iterator.hasNext(); iterator.next())
1969 if (this._filter(iterator.item())) 2007 if (this._filter(iterator.item()))
1970 return false; 2008 return false;
1971 } else { 2009 } else {
1972 var order = this._unfilteredIterationOrder; 2010 var order = this._unfilteredIterationOrder.constructor === Array ?
2011 this._unfilteredIterationOrder : this._unfilteredIterationOrder. slice(0);
1973 for (var i = 0, l = order.length; i < l; ++i) { 2012 for (var i = 0, l = order.length; i < l; ++i) {
1974 iterator.setIndex(order[i]); 2013 iterator.setIndex(order[i]);
1975 if (this._filter(iterator.item())) 2014 if (this._filter(iterator.item()))
1976 return false; 2015 return false;
1977 } 2016 }
1978 } 2017 }
1979 return true; 2018 return true;
1980 }, 2019 },
1981 2020
1982 /** 2021 /**
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 this._iterationOrder.sortRange(compareNodeAndNode, leftBound, rightB ound, windowLeft, windowRight); 2171 this._iterationOrder.sortRange(compareNodeAndNode, leftBound, rightB ound, windowLeft, windowRight);
2133 }, 2172 },
2134 2173
2135 __proto__: WebInspector.HeapSnapshotFilteredOrderedIterator.prototype 2174 __proto__: WebInspector.HeapSnapshotFilteredOrderedIterator.prototype
2136 } 2175 }
2137 2176
2138 2177
2139 /** 2178 /**
2140 * @constructor 2179 * @constructor
2141 * @extends {WebInspector.HeapSnapshotFilteredOrderedIterator} 2180 * @extends {WebInspector.HeapSnapshotFilteredOrderedIterator}
2142 * @param {(!Array.<number>|!Uint32Array)=} nodeIndexes 2181 * @param {!Array.<number>=} nodeIndexes
2143 */ 2182 */
2144 WebInspector.HeapSnapshotNodesProvider = function(snapshot, filter, nodeIndexes) 2183 WebInspector.HeapSnapshotNodesProvider = function(snapshot, filter, nodeIndexes)
2145 { 2184 {
2146 this.snapshot = snapshot; 2185 this.snapshot = snapshot;
2147 WebInspector.HeapSnapshotFilteredOrderedIterator.call(this, snapshot._allNod es(), filter, nodeIndexes); 2186 WebInspector.HeapSnapshotFilteredOrderedIterator.call(this, snapshot._allNod es(), filter, nodeIndexes);
2148 } 2187 }
2149 2188
2150 WebInspector.HeapSnapshotNodesProvider.prototype = { 2189 WebInspector.HeapSnapshotNodesProvider.prototype = {
2151 /** 2190 /**
2152 * @param {string} snapshotObjectId 2191 * @param {string} snapshotObjectId
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
2222 * @param {number} windowRight 2261 * @param {number} windowRight
2223 */ 2262 */
2224 sort: function(comparator, leftBound, rightBound, windowLeft, windowRight) 2263 sort: function(comparator, leftBound, rightBound, windowLeft, windowRight)
2225 { 2264 {
2226 this._iterationOrder.sortRange(this._buildCompareFunction(comparator), l eftBound, rightBound, windowLeft, windowRight); 2265 this._iterationOrder.sortRange(this._buildCompareFunction(comparator), l eftBound, rightBound, windowLeft, windowRight);
2227 }, 2266 },
2228 2267
2229 __proto__: WebInspector.HeapSnapshotFilteredOrderedIterator.prototype 2268 __proto__: WebInspector.HeapSnapshotFilteredOrderedIterator.prototype
2230 } 2269 }
2231 2270
OLDNEW
« no previous file with comments | « LayoutTests/inspector/profiler/heap-snapshot-test.js ('k') | Source/devtools/front_end/JSHeapSnapshot.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698