Title: [111702] trunk/Source/WebCore
Revision
111702
Author
[email protected]
Date
2012-03-22 08:15:52 -0700 (Thu, 22 Mar 2012)

Log Message

Unreviewed, rolling out r111688.
http://trac.webkit.org/changeset/111688
https://bugs.webkit.org/show_bug.cgi?id=81912

"Heap profiler test fails" (Requested by yurys on #webkit).

Patch by Sheriff Bot <[email protected]> on 2012-03-22

* inspector/front-end/HeapSnapshot.js:
(WebInspector.HeapSnapshot.prototype._buildRetainers):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (111701 => 111702)


--- trunk/Source/WebCore/ChangeLog	2012-03-22 15:09:50 UTC (rev 111701)
+++ trunk/Source/WebCore/ChangeLog	2012-03-22 15:15:52 UTC (rev 111702)
@@ -1,3 +1,14 @@
+2012-03-22  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r111688.
+        http://trac.webkit.org/changeset/111688
+        https://bugs.webkit.org/show_bug.cgi?id=81912
+
+        "Heap profiler test fails" (Requested by yurys on #webkit).
+
+        * inspector/front-end/HeapSnapshot.js:
+        (WebInspector.HeapSnapshot.prototype._buildRetainers):
+
 2012-03-22  Dana Jansens  <[email protected]>
 
         [chromium] Early out in a new prepareToDraw() step if checkerboarding an accelerated animation in order to skip the frame

Modified: trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js (111701 => 111702)


--- trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js	2012-03-22 15:09:50 UTC (rev 111701)
+++ trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js	2012-03-22 15:15:52 UTC (rev 111702)
@@ -959,56 +959,22 @@
 
     _buildRetainers: function()
     {
-        var nodeIndexes = this.nodeIndexes;
-        var nodePositions = this._nodePosition;
-        var nodeCount = this.nodeCount;
-        var nodes = this._nodes;
-
-        // Builds up two arrays:
-        //  - "backRefsArray" is a continuous array, where each node owns an
-        //    interval (can be empty) with corresponding back references.
-        //  - "indexArray" is an array of indexes in the "backRefsArray"
-        //    with the same positions as in the _nodeIndex.
-        var indexArray = this._retainerIndex = new Int32Array(nodeCount);
-        var edgesCountOffset = this._edgesCountOffset;
-        var firstEdgeOffset = this._firstEdgeOffset;
-        var edgeFieldsCount = this._edgeFieldsCount;
-        var edgeToNodeOffset = this._edgeToNodeOffset;
-        var backRefsCount = 0;
-        // Count the number of retainers for each node
-        for (var i = 0; i < nodeCount; ++i) {
-            var nodeIndex = nodeIndexes[i];
-            var edgesOffset = nodeIndex + firstEdgeOffset + edgeToNodeOffset;
-            var edgesCount = nodes[nodeIndex + edgesCountOffset];
-            backRefsCount += edgesCount;
-            for (var j = 0; j < edgesCount; ++j) {
-              var targetNodeIndex = nodes[j * edgeFieldsCount + edgesOffset];
-              ++indexArray[nodePositions[targetNodeIndex]];
-            }
-        }
-        var backRefsArray = this._retainers = new Int32Array(backRefsCount);
-        // Put in the first slot of each backRefsArray slice the count of entries
-        // that will be filled.
-        var backRefsPosition = 0;
-        for (i = 0; i < nodeCount; ++i) {
-            backRefsCount = backRefsArray[backRefsPosition] = indexArray[i];
-            indexArray[i] = backRefsPosition;
-            backRefsPosition += backRefsCount;
-        }
-        var retainerIndex = this._retainerIndex;
-        // Fill up the retainers array with indexes of edges.
-        for (var i = 0; i < nodeCount; ++i) {
-            var nodeIndex = nodeIndexes[i];
-            var edgesOffset = nodeIndex + firstEdgeOffset;
-            var edgesCount = nodes[nodeIndex + edgesCountOffset];
-            for (var j = 0; j < edgesCount; ++j) {
-                var edgeIndex = j * edgeFieldsCount + edgesOffset;
-                var retNode = nodePositions[nodes[edgeIndex + edgeToNodeOffset]];
-                var retIndex = indexArray[retNode];
-                var backRefIndex = retIndex + (--backRefsArray[retIndex]);
-                backRefsArray[backRefIndex] = edgeIndex;
-            }
-        }
+        this._buildReverseIndex(
+            "_retainerIndex",
+            "_retainers",
+            (function (node, callback)
+             {
+                 for (var edgesIter = node.edges; edgesIter.hasNext(); edgesIter.next())
+                     callback(this._nodePosition[edgesIter.edge.nodeIndex]);
+             }).bind(this),
+            (function (node, indexCallback, dataCallback)
+             {
+                 for (var edgesIter = node.edges; edgesIter.hasNext(); edgesIter.next()) {
+                     var edge = edgesIter.edge;
+                     var retIndex = this._getRetainerIndex(edge.nodeIndex);
+                     dataCallback(indexCallback(retIndex), node.nodeIndex + this._firstEdgeOffset + edge.edgeIndex);
+                 }
+             }).bind(this));
     },
 
     _calculateObjectToWindowDistance: function()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to