It can be made faster.
Created attachment 134031 [details] Patch
Comment on attachment 134031 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=134031&action=review > Source/WebCore/inspector/front-end/HeapSnapshot.js:1231 > + for (var i = 1, l = nodes.length; i < l; ++count) { rootNodeIndex? > Source/WebCore/inspector/front-end/HeapSnapshot.js:1238 > + for (var i = 1, l = nodes.length; i < l; ++count) { ditto > Source/WebCore/inspector/front-end/HeapSnapshot.js:1282 > + var indexArray = this._dominatedIndex = new Int32Array(nodeCount + 1); Uint32Array > Source/WebCore/inspector/front-end/HeapSnapshot.js:1291 > + var dominatedNodes = this._dominatedNodes = new Int32Array(nodeCount + 1); ditto
Comment on attachment 134031 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=134031&action=review > Source/WebCore/inspector/front-end/HeapSnapshot.js:1227 > + var edgesCountOffset = this._edgesCountOffset; We can just inline these as there is no performance gain. > Source/WebCore/inspector/front-end/HeapSnapshot.js:1272 > + var nodeIndexes = this.nodeIndexes; Consider inlining these as well. > Source/WebCore/inspector/front-end/HeapSnapshot.js:1282 > + var indexArray = this._dominatedIndex = new Int32Array(nodeCount + 1); Int32Array -> Uint32Array > Source/WebCore/inspector/front-end/HeapSnapshot.js:1291 > + var dominatedNodes = this._dominatedNodes = new Int32Array(nodeCount + 1); Int32Array -> Uint32Array, length of the dominatedNodes array should be equal to sum of all indexArrat values at this point, not nodeCount+1 > Source/WebCore/inspector/front-end/HeapSnapshot.js:1389 > + var flags = this._flags; Please inline these. > Source/WebCore/inspector/front-end/HeapSnapshot.js:1403 > + edge._edges = node.rawEdges; Why not take node.edges? Could you at least introduce a public setter on the edge?
Comment on attachment 134031 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=134031&action=review >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1227 >> + var edgesCountOffset = this._edgesCountOffset; > > We can just inline these as there is no performance gain. done >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1231 >> + for (var i = 1, l = nodes.length; i < l; ++count) { > > rootNodeIndex? done >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1238 >> + for (var i = 1, l = nodes.length; i < l; ++count) { > > ditto done >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1272 >> + var nodeIndexes = this.nodeIndexes; > > Consider inlining these as well. done >>> Source/WebCore/inspector/front-end/HeapSnapshot.js:1291 >>> + var dominatedNodes = this._dominatedNodes = new Int32Array(nodeCount + 1); >> >> ditto > > Int32Array -> Uint32Array, length of the dominatedNodes array should be equal to sum of all indexArrat values at this point, not nodeCount+1 it is nodeCount - 1, as each node except for root has one dominator. >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1389 >> + var flags = this._flags; > > Please inline these. done >> Source/WebCore/inspector/front-end/HeapSnapshot.js:1403 >> + edge._edges = node.rawEdges; > > Why not take node.edges? Could you at least introduce a public setter on the edge? node.edges is an iterator which I'd like to avoid. Don't wanna introduce a setter, we don't have them for nodeIndex and edgeIndex.
Created attachment 134056 [details] Patch
Comment on attachment 134056 [details] Patch Clearing flags on attachment: 134056 Committed r112271: <http://trac.webkit.org/changeset/112271>
All reviewed patches have been landed. Closing bug.