Title: [89008] trunk
Revision
89008
Author
[email protected]
Date
2011-06-15 23:24:14 -0700 (Wed, 15 Jun 2011)

Log Message

2011-06-15  Mikhail Naganov  <[email protected]>

        Reviewed by Pavel Feldman.

        WebInspector [Chromium]: Make heap snapshots UI more responsive.
        https://bugs.webkit.org/show_bug.cgi?id=62360

        Two changes have been made:
          - when we request elements, sort array only partially;
          - when populating children, do it in batches;

        * WebCore.gypi:
        * WebCore.vcproj/WebCore.vcproj:
        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.callSerialize):
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.childrenRetrieved):
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren):
        * inspector/front-end/HeapSnapshot.js:
        (WebInspector.HeapSnapshotFilteredOrderedIterator):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.serializeNextItems):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.sortAndRewind):
        (WebInspector.HeapSnapshotEdgesProvider.prototype.sort):
        (WebInspector.HeapSnapshotNodesProvider.prototype.sort):
        * inspector/front-end/HeapSnapshotWorker.js:
        * inspector/front-end/PartialQuickSort.js: Added.
        * inspector/front-end/WebKit.qrc:
        * inspector/front-end/inspector.html:

2011-06-15  Mikhail Naganov  <[email protected]>

        Reviewed by Pavel Feldman.

        WebInspector [Chromium]: Make heap snapshots UI more responsive.
        https://bugs.webkit.org/show_bug.cgi?id=62360

        Two changes have been made:
          - when we request elements, sort array only partially;
          - when populating children, do it in batches;

        * WebKit.gyp:

2011-06-15  Mikhail Naganov  <[email protected]>

        Reviewed by Pavel Feldman.

        WebInspector [Chromium]: Make heap snapshots UI more responsive.
        https://bugs.webkit.org/show_bug.cgi?id=62360

        Two changes have been made:
          - when we request elements, sort array only partially;
          - when populating children, do it in batches;

        * inspector/profiler/heap-snapshot.html:
        * inspector/utilities.html:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (89007 => 89008)


--- trunk/LayoutTests/ChangeLog	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/LayoutTests/ChangeLog	2011-06-16 06:24:14 UTC (rev 89008)
@@ -1,3 +1,17 @@
+2011-06-15  Mikhail Naganov  <[email protected]>
+
+        Reviewed by Pavel Feldman.
+
+        WebInspector [Chromium]: Make heap snapshots UI more responsive.
+        https://bugs.webkit.org/show_bug.cgi?id=62360
+
+        Two changes have been made:
+          - when we request elements, sort array only partially;
+          - when populating children, do it in batches;
+
+        * inspector/profiler/heap-snapshot.html:
+        * inspector/utilities.html:
+
 2011-06-08  Keishi Hattori  <[email protected]>
 
         Reviewed by Kent Tamura.

Modified: trunk/LayoutTests/inspector/profiler/heap-snapshot.html (89007 => 89008)


--- trunk/LayoutTests/inspector/profiler/heap-snapshot.html	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/LayoutTests/inspector/profiler/heap-snapshot.html	2011-06-16 06:24:14 UTC (rev 89008)
@@ -159,8 +159,9 @@
          
             var provider = new WebInspector.HeapSnapshotNodesProvider(snapshot, nodeFilter);
             // Sort by names in reverse order.
-            provider.sort(WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(["name", false, "id", false]));
             InspectorTest.assertEquals(3, provider.length, "nodes provider length");
+            provider.sort(WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(["name", false, "id", false]), 0, 2, 3);
+            InspectorTest.assertEquals(3, provider.length, "nodes provider length");
             var names = [];
             for (provider.first(); provider.hasNext(); provider.next())
                 names.push(provider.item.name);
@@ -178,8 +179,9 @@
             }
          
             var provider = new WebInspector.HeapSnapshotEdgesProvider(snapshot, snapshot.rootNodeIndex, edgeFilter);
-            provider.sort(WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(["!edgeName", false, "id", false]));
             InspectorTest.assertEquals(1, provider.length, "edges provider length");
+            provider.sort(WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(["!edgeName", false, "id", false]), 0, 0, 1);
+            InspectorTest.assertEquals(1, provider.length, "edges provider length");
             var names = [];
             for (provider.first(); provider.hasNext(); provider.next())
                 names.push(provider.item.name);

Modified: trunk/LayoutTests/inspector/utilities-expected.txt (89007 => 89008)


--- trunk/LayoutTests/inspector/utilities-expected.txt	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/LayoutTests/inspector/utilities-expected.txt	2011-06-16 06:24:14 UTC (rev 89008)
@@ -1,4 +1,7 @@
 This test checks Web Inspector utilities.
 
-PASS: binaryIndexOf
 
+Running: binaryIndexOfTest
+
+Running: sortRangeTest
+

Modified: trunk/LayoutTests/inspector/utilities.html (89007 => 89008)


--- trunk/LayoutTests/inspector/utilities.html	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/LayoutTests/inspector/utilities.html	2011-06-16 06:24:14 UTC (rev 89008)
@@ -5,46 +5,82 @@
 
 function test()
 {
-    (function binaryIndexOfTest()
-    {
-        var testArrays = [
-            [],
-            [1],
-            [1, 10],
-            [1, 10, 11, 12, 13, 14, 100],
-            [-100, -50, 0, 50, 100],
-            [-100, -14, -13, -12, -11, -10, -1]
-        ];
-
-        function testArray(array)
+    InspectorTest.runTestSuite([
+        function binaryIndexOfTest(next)
         {
-            function comparator(a, b)
+            var testArrays = [
+                [],
+                [1],
+                [1, 10],
+                [1, 10, 11, 12, 13, 14, 100],
+                [-100, -50, 0, 50, 100],
+                [-100, -14, -13, -12, -11, -10, -1]
+            ];
+     
+            function testArray(array)
             {
-                return a < b ? -1 : (a > b ? 1 : 0);
+                function comparator(a, b)
+                {
+                    return a < b ? -1 : (a > b ? 1 : 0);
+                }
+     
+                for (var i = -100; i <= 100; ++i) {
+                    var reference = array.indexOf(i);
+                    var actual = array.binaryIndexOf(i, comparator);
+                    InspectorTest.assertEquals(reference, actual, "binaryIndexOf");
+                }
+                return true;
             }
+     
+            for (var i = 0, l = testArrays.length; i < l; ++i)
+                testArray(testArrays[i]);
+            next();
+        },
 
-            for (var i = -100; i <= 100; ++i) {
-                var reference = array.indexOf(i);
-                var actual = array.binaryIndexOf(i, comparator);
-                if (reference !== actual) {
-                    InspectorTest.addResult(String.vsprintf("FAIL: binaryIndexOf: expected %d, actual %d for %d on %s", [expected, actual, i, array.join(",")]));
-                    return false;
+        function sortRangeTest(next)
+        {
+            var testArrays = [
+                [],
+                [1],
+                [2, 1],
+                [6, 4, 2, 7, 10, 15, 1],
+                [10, 44, 3, 6, 56, 66, 10, 55, 32, 56, 2, 5]
+            ];
+
+            function testArray(array)
+            {
+                function comparator(a, b)
+                {
+                    return a < b ? -1 : (a > b ? 1 : 0);
                 }
+
+                function compareArrays(a, b, message)
+                {
+                    InspectorTest.assertEquals(JSON.stringify(a), JSON.stringify(b), message);
+                }
+
+                for (var left = 0, l = array.length - 1; left < l; ++left) {
+                     for (var right = left + 1, r = array.length; right < r; ++right)
+                          for (var count = 1, k = right - left + 1; count <= k; ++count) {
+                              var actual = array.slice(0);
+                              actual.sortRange(comparator, left, right, count);
+                              compareArrays(array.slice(0, left), actual.slice(0, left), "left " + left + " " + right + " " + count);
+                              compareArrays(array.slice(right + 1), actual.slice(right + 1), "right " + left + " " + right + " " + count);
+                              var middle = array.slice(left, right + 1);
+                              middle.sort(comparator);
+                              compareArrays(middle.slice(0, count), actual.slice(left, left + count), "sorted " + left + " " + right + " " + count);
+                              actualRest = actual.slice(left + count, right + 1);
+                              actualRest.sort(comparator);
+                              compareArrays(middle.slice(count), actualRest, "unsorted " + left + " " + right + " " + count);
+                          }
+                }
             }
-            return true;
-        }
 
-        var passed = true;
-        for (var i = 0, l = testArrays.length; i < l; ++i) {
-            if (!testArray(testArrays[i])) {
-                passed = false;
-                break;
-            }
+            for (var i = 0, len = testArrays.length; i < len; ++i)
+                testArray(testArrays[i]);
+            next();
         }
-        if (passed)
-            InspectorTest.addResult("PASS: binaryIndexOf");
-        InspectorTest.completeTest();
-    })();
+    ]);
 }
 
 </script>

Modified: trunk/Source/WebCore/ChangeLog (89007 => 89008)


--- trunk/Source/WebCore/ChangeLog	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/ChangeLog	2011-06-16 06:24:14 UTC (rev 89008)
@@ -1,3 +1,31 @@
+2011-06-15  Mikhail Naganov  <[email protected]>
+
+        Reviewed by Pavel Feldman.
+
+        WebInspector [Chromium]: Make heap snapshots UI more responsive.
+        https://bugs.webkit.org/show_bug.cgi?id=62360
+
+        Two changes have been made:
+          - when we request elements, sort array only partially;
+          - when populating children, do it in batches;
+
+        * WebCore.gypi:
+        * WebCore.vcproj/WebCore.vcproj:
+        * inspector/front-end/DetailedHeapshotGridNodes.js:
+        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.callSerialize):
+        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.childrenRetrieved):
+        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren):
+        * inspector/front-end/HeapSnapshot.js:
+        (WebInspector.HeapSnapshotFilteredOrderedIterator):
+        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.serializeNextItems):
+        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.sortAndRewind):
+        (WebInspector.HeapSnapshotEdgesProvider.prototype.sort):
+        (WebInspector.HeapSnapshotNodesProvider.prototype.sort):
+        * inspector/front-end/HeapSnapshotWorker.js:
+        * inspector/front-end/PartialQuickSort.js: Added.
+        * inspector/front-end/WebKit.qrc:
+        * inspector/front-end/inspector.html:
+
 2011-06-15  Adam Barth  <[email protected]>
 
         Reviewed by Eric Seidel.

Modified: trunk/Source/WebCore/WebCore.gypi (89007 => 89008)


--- trunk/Source/WebCore/WebCore.gypi	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/WebCore.gypi	2011-06-16 06:24:14 UTC (rev 89008)
@@ -6257,6 +6257,7 @@
             'inspector/front-end/ObjectPropertiesSection.js',
             'inspector/front-end/Panel.js',
             'inspector/front-end/PanelEnablerView.js',
+            'inspector/front-end/PartialQuickSort.js',
             'inspector/front-end/Placard.js',
             'inspector/front-end/PleaseWaitMessage.js',
             'inspector/front-end/Popover.js',

Modified: trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj (89007 => 89008)


--- trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj	2011-06-16 06:24:14 UTC (rev 89008)
@@ -68093,6 +68093,10 @@
 					>
 				</File>
 				<File
+					RelativePath="..\inspector\front-end\PartialQuickSort.js"
+					>
+				</File>
+				<File
 					RelativePath="..\inspector\front-end\Placard.js"
 					>
 				</File>

Modified: trunk/Source/WebCore/inspector/front-end/DetailedHeapshotGridNodes.js (89007 => 89008)


--- trunk/Source/WebCore/inspector/front-end/DetailedHeapshotGridNodes.js	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/inspector/front-end/DetailedHeapshotGridNodes.js	2011-06-16 06:24:14 UTC (rev 89008)
@@ -85,10 +85,17 @@
                 break;
             }
         }
-        
+
+        var part = 0;
+        function callSerialize()
+        {
+            if (part >= howMany)
+                return;
+            part += this._defaultPopulateCount;
+            provider.serializeNextItems(this._defaultPopulateCount, childrenRetrieved.bind(this));
+        }
         function childrenRetrieved(items)
         {
-            var hasNext = items.hasNext;
             var length = items.totalLength;
             for (var i = 0, l = items.length; i < l; ++i) {
                 var item = items[i];
@@ -102,8 +109,12 @@
                 this.insertChild(this._createChildNode(item, provider), atIndex++);
             }
             provider.instanceCount += items.length;
+            if (part < howMany) {
+                setTimeout(callSerialize.bind(this), 0);
+                return;
+            }
 
-            if (hasNext)
+            if (items.hasNext)
                 this.insertChild(new WebInspector.ShowMoreDataGridNode(this.populateChildren.bind(this, provider), this._defaultPopulateCount, length), atIndex++);
             if (afterPopulate)
                 afterPopulate();
@@ -116,10 +127,6 @@
             }
             WebInspector.PleaseWaitMessage.prototype.hide();
         }
-        function callSerialize()
-        {
-            provider.serializeNextItems(howMany, childrenRetrieved.bind(this));
-        }
         setTimeout(callSerialize.bind(this), 0);
     },
 

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


--- trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js	2011-06-16 06:24:14 UTC (rev 89008)
@@ -957,6 +957,7 @@
     this._iterator = iterator;
     this._iterationOrder = iterationOrder ? iterationOrder.slice(0) : null;
     this._position = 0;
+    this._currentComparator = null;
     this._lastComparator = null;
 }
 
@@ -1020,18 +1021,24 @@
 
     serializeNextItems: function(count)
     {
+        if (!this._iterationOrder)
+            this._createIterationOrder();
         var result = new Array(count);
+        if (this._lastComparator !== this._currentComparator)
+            this.sort(this._currentComparator, this._position, this._iterationOrder.length - 1, count);
         for (var i = 0 ; i < count && this.hasNext(); ++i, this.next())
             result[i] = this._serialize(this.item);
         result.length = i;
         result.hasNext = this.hasNext();
-        result.totalLength = this.length;
+        result.totalLength = this._iterationOrder.length;
         return result;
     },
 
     sortAndRewind: function(comparator)
     {
-        var result = this.sort(comparator);
+        this._lastComparator = this._currentComparator;
+        this._currentComparator = comparator;
+        var result = this._lastComparator !== this._currentComparator;
         if (result)
             this.first();
         return result;
@@ -1056,11 +1063,8 @@
         return {name: edge.name, node: WebInspector.HeapSnapshotNodesProvider.prototype._serialize(edge.node), nodeIndex: edge.nodeIndex, type: edge.type};
     },
 
-    sort: function(comparator)
+    sort: function(comparator, leftBound, rightBound, count)
     {
-        if (this._lastComparator === comparator)
-            return false;
-        this._lastComparator = comparator;
         var fieldName1 = comparator.fieldName1;
         var fieldName2 = comparator.fieldName2;
         var ascending1 = comparator.ascending1;
@@ -1096,9 +1100,6 @@
             return ascending ? result : -result;
         }
 
-        if (!this._iterationOrder)
-            this._createIterationOrder();
-
         function sortByEdgeAndNode(indexA, indexB) {
             var result = sortByEdgeFieldName(ascending1, indexA, indexB);
             if (result === 0)
@@ -1121,12 +1122,11 @@
         }
 
         if (fieldName1 === "!edgeName")
-            this._iterationOrder.sort(sortByEdgeAndNode);
+            this._iterationOrder.sortRange(sortByEdgeAndNode, leftBound, rightBound, count);
         else if (fieldName2 === "!edgeName")
-            this._iterationOrder.sort(sortByNodeAndEdge);
+            this._iterationOrder.sortRange(sortByNodeAndEdge, leftBound, rightBound, count);
         else
-            this._iterationOrder.sort(sortByNodeAndNode);
-        return true;
+            this._iterationOrder.sortRange(sortByNodeAndNode, leftBound, rightBound, count);
     }
 };
 
@@ -1147,11 +1147,8 @@
         return {id: node.id, name: node.name, nodeIndex: node.nodeIndex, retainedSize: node.retainedSize, selfSize: node.selfSize, type: node.type};
     },
 
-    sort: function(comparator)
+    sort: function(comparator, leftBound, rightBound, count)
     {
-        if (this._lastComparator === comparator)
-            return false;
-        this._lastComparator = comparator;
         var fieldName1 = comparator.fieldName1;
         var fieldName2 = comparator.fieldName2;
         var ascending1 = comparator.ascending1;
@@ -1170,9 +1167,6 @@
             return ascending ? result : -result;
         }
 
-        if (!this._iterationOrder)
-            this._createIterationOrder();
-
         function sortByComparator(indexA, indexB) {
             var result = sortByNodeField(fieldName1, ascending1, indexA, indexB);
             if (result === 0)
@@ -1180,8 +1174,7 @@
             return result;
         }
 
-        this._iterationOrder.sort(sortByComparator);
-        return true;
+        this._iterationOrder.sortRange(sortByComparator, leftBound, rightBound, count);
     }
 };
 

Modified: trunk/Source/WebCore/inspector/front-end/HeapSnapshotWorker.js (89007 => 89008)


--- trunk/Source/WebCore/inspector/front-end/HeapSnapshotWorker.js	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/inspector/front-end/HeapSnapshotWorker.js	2011-06-16 06:24:14 UTC (rev 89008)
@@ -34,6 +34,7 @@
 importScripts("BinarySearch.js");
 importScripts("HeapSnapshot.js");
 importScripts("HeapSnapshotWorkerDispatcher.js");
+importScripts("PartialQuickSort.js");
 
 function postMessageWrapper(message)
 {

Copied: trunk/Source/WebCore/inspector/front-end/PartialQuickSort.js (from rev 89007, trunk/Source/WebCore/inspector/front-end/HeapSnapshotWorker.js) (0 => 89008)


--- trunk/Source/WebCore/inspector/front-end/PartialQuickSort.js	                        (rev 0)
+++ trunk/Source/WebCore/inspector/front-end/PartialQuickSort.js	2011-06-16 06:24:14 UTC (rev 89008)
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+Object.defineProperty(Array.prototype, "sortRange", { value: function(comparator, leftBound, rightBound, k)
+{
+    function swap(array, i1, i2)
+    {
+        var temp = array[i1];
+        array[i1] = array[i2];
+        array[i2] = temp;
+    }
+     
+    function partition(array, comparator, left, right, pivotIndex)
+    {
+        var pivotValue = array[pivotIndex];
+        swap(array, right, pivotIndex);
+        var storeIndex = left;
+        for (var i = left; i < right; ++i) {
+            if (comparator(array[i], pivotValue) < 0) {
+                swap(array, storeIndex, i);
+                ++storeIndex;
+            }
+        }
+        swap(array, right, storeIndex);
+        return storeIndex;
+    }
+     
+    function quickSortFirstK(array, comparator, left, right, k)
+    {
+        if (right <= left)
+            return;
+        var pivotIndex = Math.floor(Math.random() * (right - left)) + left;
+        var pivotNewIndex = partition(array, comparator, left, right, pivotIndex);
+        quickSortFirstK(array, comparator, left, pivotNewIndex - 1, k);
+        if (pivotNewIndex < left + k - 1)
+            quickSortFirstK(array, comparator, pivotNewIndex + 1, right, k);
+    }
+
+    if (leftBound === 0 && rightBound === (this.length - 1) && k === this.length)
+        this.sort(comparator);
+    else
+        quickSortFirstK(this, comparator, leftBound, rightBound, k);
+    return this;
+}});

Modified: trunk/Source/WebCore/inspector/front-end/WebKit.qrc (89007 => 89008)


--- trunk/Source/WebCore/inspector/front-end/WebKit.qrc	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/inspector/front-end/WebKit.qrc	2011-06-16 06:24:14 UTC (rev 89008)
@@ -70,6 +70,7 @@
     <file>ObjectPropertiesSection.js</file>
     <file>Panel.js</file>
     <file>PanelEnablerView.js</file>
+    <file>PartialQuickSort.js</file>
     <file>Placard.js</file>
     <file>PleaseWaitMessage.js</file>
     <file>Popover.js</file>

Modified: trunk/Source/WebCore/inspector/front-end/inspector.html (89007 => 89008)


--- trunk/Source/WebCore/inspector/front-end/inspector.html	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebCore/inspector/front-end/inspector.html	2011-06-16 06:24:14 UTC (rev 89008)
@@ -143,6 +143,7 @@
     <script type="text/_javascript_" src=""
     <script type="text/_javascript_" src=""
     <script type="text/_javascript_" src=""
+    <script type="text/_javascript_" src=""
     <script type="text/_javascript_" src=""
     <script type="text/_javascript_" src=""
     <script type="text/_javascript_" src=""

Modified: trunk/Source/WebKit/chromium/ChangeLog (89007 => 89008)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-06-16 06:24:14 UTC (rev 89008)
@@ -1,3 +1,16 @@
+2011-06-15  Mikhail Naganov  <[email protected]>
+
+        Reviewed by Pavel Feldman.
+
+        WebInspector [Chromium]: Make heap snapshots UI more responsive.
+        https://bugs.webkit.org/show_bug.cgi?id=62360
+
+        Two changes have been made:
+          - when we request elements, sort array only partially;
+          - when populating children, do it in batches;
+
+        * WebKit.gyp:
+
 2011-06-15  Adam Barth  <[email protected]>
 
         Reviewed by Eric Seidel.

Modified: trunk/Source/WebKit/chromium/WebKit.gyp (89007 => 89008)


--- trunk/Source/WebKit/chromium/WebKit.gyp	2011-06-16 06:15:29 UTC (rev 89007)
+++ trunk/Source/WebKit/chromium/WebKit.gyp	2011-06-16 06:24:14 UTC (rev 89008)
@@ -1279,6 +1279,7 @@
                             '../../WebCore/inspector/front-end/BinarySearch.js',
                             '../../WebCore/inspector/front-end/HeapSnapshot.js',
                             '../../WebCore/inspector/front-end/HeapSnapshotWorkerDispatcher.js',
+                            '../../WebCore/inspector/front-end/PartialQuickSort.js',
                         ],
                         'search_path': '../../WebCore/inspector/front-end',
                         'outputs': ['<(PRODUCT_DIR)/resources/inspector/HeapSnapshotWorker.js'],
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to