Changeset 117545 in webkit


Ignore:
Timestamp:
May 17, 2012 10:44:42 PM (12 years ago)
Author:
loislo@chromium.org
Message:

Web Inspector: speed-up markQueriableHeapObjects function.
https://bugs.webkit.org/show_bug.cgi?id=86732

Reviewed by Yury Semikhatsky.

  • inspector/front-end/HeapSnapshot.js:

(WebInspector.HeapSnapshot.prototype._flagsOfNode):
(WebInspector.HeapSnapshot.prototype._markDetachedDOMTreeNodes):
(WebInspector.HeapSnapshot.prototype._markQueriableHeapObjects):
(WebInspector.HeapSnapshot.prototype._calculateFlags):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r117544 r117545  
     12012-05-17  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Web Inspector: speed-up markQueriableHeapObjects function.
     4        https://bugs.webkit.org/show_bug.cgi?id=86732
     5
     6        Reviewed by Yury Semikhatsky.
     7
     8        * inspector/front-end/HeapSnapshot.js:
     9        (WebInspector.HeapSnapshot.prototype._flagsOfNode):
     10        (WebInspector.HeapSnapshot.prototype._markDetachedDOMTreeNodes):
     11        (WebInspector.HeapSnapshot.prototype._markQueriableHeapObjects):
     12        (WebInspector.HeapSnapshot.prototype._calculateFlags):
     13
    1142012-05-15  Kinuko Yasuda  <kinuko@chromium.org>
    215
  • trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js

    r117437 r117545  
    826826    _flagsOfNode: function(node)
    827827    {
    828         return this._flags[node.nodeIndex];
     828        return this._flags[node.nodeIndex / this._nodeFieldCount];
    829829    },
    830830
     
    11561156            if (node.isDetachedDOMTree) {
    11571157                for (var edgesIter = node.edges; edgesIter.hasNext(); edgesIter.next())
    1158                     this._flags[edgesIter.edge.node.nodeIndex] |= flag;
     1158                    this._flags[edgesIter.edge.node.nodeIndex / this._nodeFieldCount] |= flag;
    11591159            }
    11601160        }
     
    11731173        var edgeTypeOffset = this._edgeTypeOffset;
    11741174        var edgeFieldsCount = this._edgeFieldsCount;
     1175        var containmentEdges = this._containmentEdges;
     1176        var nodes = this._nodes;
     1177        var nodeCount = this.nodeCount;
     1178        var nodeFieldCount = this._nodeFieldCount;
     1179        var firstEdgeIndexOffset = this._firstEdgeIndexOffset;
    11751180
    11761181        var flags = this._flags;
     
    11811186        }
    11821187
    1183         var node = new WebInspector.HeapSnapshotNode(this);
    11841188        while (list.length) {
    11851189            var nodeIndex = list.pop();
    1186             if (flags[nodeIndex] & flag)
     1190            var nodeOrdinal = nodeIndex / nodeFieldCount;
     1191            if (flags[nodeOrdinal] & flag)
    11871192                continue;
    1188             node.nodeIndex = nodeIndex;
    1189             flags[nodeIndex] |= flag;
    1190             var edgesCount = node.edgesCount;
    1191             var edges = node.rawEdges;
    1192             for (var j = 0; j < edgesCount; ++j) {
    1193                 var edgeIndex = j * edgeFieldsCount;
    1194                 nodeIndex = edges.item(edgeIndex + edgeToNodeOffset);
    1195                 if (flags[nodeIndex] & flag)
     1193            flags[nodeOrdinal] |= flag;
     1194            var beginEdgeIndex = nodes[nodeIndex + firstEdgeIndexOffset];
     1195            var endEdgeIndex = nodeOrdinal < nodeCount - 1
     1196                               ? nodes[nodeIndex + firstEdgeIndexOffset + nodeFieldCount]
     1197                               : containmentEdges.length;
     1198            for (var edgeIndex = beginEdgeIndex; edgeIndex < endEdgeIndex; edgeIndex += edgeFieldsCount) {
     1199                var childNodeIndex = containmentEdges[edgeIndex + edgeToNodeOffset];
     1200                if (flags[childNodeIndex / nodeFieldCount] & flag)
    11961201                    continue;
    1197                 var type = edges.item(edgeIndex + edgeTypeOffset);
     1202                var type = containmentEdges[edgeIndex + edgeTypeOffset];
    11981203                if (type === hiddenEdgeType || type === invisibleEdgeType || type === internalEdgeType)
    11991204                    continue;
    1200                 list.push(nodeIndex);
     1205                list.push(childNodeIndex);
    12011206            }
    12021207        }
     
    12051210    _calculateFlags: function()
    12061211    {
    1207         this._flags = new Array(this.nodeCount);
     1212        this._flags = new Uint32Array(this.nodeCount);
    12081213        this._markDetachedDOMTreeNodes();
    12091214        this._markQueriableHeapObjects();
Note: See TracChangeset for help on using the changeset viewer.