Changeset 117545 in webkit
- Timestamp:
- May 17, 2012 10:44:42 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r117544 r117545 1 2012-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 1 14 2012-05-15 Kinuko Yasuda <kinuko@chromium.org> 2 15 -
trunk/Source/WebCore/inspector/front-end/HeapSnapshot.js
r117437 r117545 826 826 _flagsOfNode: function(node) 827 827 { 828 return this._flags[node.nodeIndex ];828 return this._flags[node.nodeIndex / this._nodeFieldCount]; 829 829 }, 830 830 … … 1156 1156 if (node.isDetachedDOMTree) { 1157 1157 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; 1159 1159 } 1160 1160 } … … 1173 1173 var edgeTypeOffset = this._edgeTypeOffset; 1174 1174 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; 1175 1180 1176 1181 var flags = this._flags; … … 1181 1186 } 1182 1187 1183 var node = new WebInspector.HeapSnapshotNode(this);1184 1188 while (list.length) { 1185 1189 var nodeIndex = list.pop(); 1186 if (flags[nodeIndex] & flag) 1190 var nodeOrdinal = nodeIndex / nodeFieldCount; 1191 if (flags[nodeOrdinal] & flag) 1187 1192 continue; 1188 node.nodeIndex = nodeIndex;1189 flags[nodeIndex] |= flag;1190 var e dgesCount = 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) 1196 1201 continue; 1197 var type = edges.item(edgeIndex + edgeTypeOffset);1202 var type = containmentEdges[edgeIndex + edgeTypeOffset]; 1198 1203 if (type === hiddenEdgeType || type === invisibleEdgeType || type === internalEdgeType) 1199 1204 continue; 1200 list.push( nodeIndex);1205 list.push(childNodeIndex); 1201 1206 } 1202 1207 } … … 1205 1210 _calculateFlags: function() 1206 1211 { 1207 this._flags = new Array(this.nodeCount);1212 this._flags = new Uint32Array(this.nodeCount); 1208 1213 this._markDetachedDOMTreeNodes(); 1209 1214 this._markQueriableHeapObjects();
Note: See TracChangeset
for help on using the changeset viewer.