Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Side by Side Diff: Source/devtools/front_end/profiler/heap_snapshot_worker/JSHeapSnapshot.js

Issue 356843008: Fix private member access violations in profiler module (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressed apavlov's comments Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/profiler/heap_snapshot_worker/HeapSnapshot.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 if (!mapAndFlag) 90 if (!mapAndFlag)
91 return null; 91 return null;
92 var map = mapAndFlag.map; 92 var map = mapAndFlag.map;
93 var flag = mapAndFlag.flag; 93 var flag = mapAndFlag.flag;
94 /** 94 /**
95 * @param {!WebInspector.JSHeapSnapshotNode} node 95 * @param {!WebInspector.JSHeapSnapshotNode} node
96 * @return {boolean} 96 * @return {boolean}
97 */ 97 */
98 function filter(node) 98 function filter(node)
99 { 99 {
100 return !!(map[node._ordinal()] & flag); 100 return !!(map[node.ordinal()] & flag);
101 } 101 }
102 return filter; 102 return filter;
103 }, 103 },
104 104
105 /** 105 /**
106 * @return {function(!WebInspector.HeapSnapshotEdge):boolean} 106 * @return {function(!WebInspector.HeapSnapshotEdge):boolean}
107 */ 107 */
108 containmentEdgesFilter: function() 108 containmentEdgesFilter: function()
109 { 109 {
110 var showHiddenData = this._showHiddenData; 110 var showHiddenData = this._showHiddenData;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 } 169 }
170 return null; 170 return null;
171 } 171 }
172 172
173 var visitedNodes = {}; 173 var visitedNodes = {};
174 /** 174 /**
175 * @param {!WebInspector.HeapSnapshotNode} node 175 * @param {!WebInspector.HeapSnapshotNode} node
176 */ 176 */
177 function doAction(node) 177 function doAction(node)
178 { 178 {
179 var ordinal = node._ordinal(); 179 var ordinal = node.ordinal();
180 if (!visitedNodes[ordinal]) { 180 if (!visitedNodes[ordinal]) {
181 action(node); 181 action(node);
182 visitedNodes[ordinal] = true; 182 visitedNodes[ordinal] = true;
183 } 183 }
184 } 184 }
185 185
186 var gcRoots = getChildNodeByName(this.rootNode(), "(GC roots)"); 186 var gcRoots = getChildNodeByName(this.rootNode(), "(GC roots)");
187 if (!gcRoots) 187 if (!gcRoots)
188 return; 188 return;
189 189
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // via regular properties, and for DOM wrappers. Trying to access random objects 252 // via regular properties, and for DOM wrappers. Trying to access random objects
253 // can cause a crash due to insonsistent state of internal properties of wrappers. 253 // can cause a crash due to insonsistent state of internal properties of wrappers.
254 var flag = this._nodeFlags.canBeQueried; 254 var flag = this._nodeFlags.canBeQueried;
255 var hiddenEdgeType = this._edgeHiddenType; 255 var hiddenEdgeType = this._edgeHiddenType;
256 var internalEdgeType = this._edgeInternalType; 256 var internalEdgeType = this._edgeInternalType;
257 var invisibleEdgeType = this._edgeInvisibleType; 257 var invisibleEdgeType = this._edgeInvisibleType;
258 var weakEdgeType = this._edgeWeakType; 258 var weakEdgeType = this._edgeWeakType;
259 var edgeToNodeOffset = this._edgeToNodeOffset; 259 var edgeToNodeOffset = this._edgeToNodeOffset;
260 var edgeTypeOffset = this._edgeTypeOffset; 260 var edgeTypeOffset = this._edgeTypeOffset;
261 var edgeFieldsCount = this._edgeFieldsCount; 261 var edgeFieldsCount = this._edgeFieldsCount;
262 var containmentEdges = this._containmentEdges; 262 var containmentEdges = this.containmentEdges;
263 var nodes = this._nodes; 263 var nodes = this.nodes;
264 var nodeCount = this.nodeCount; 264 var nodeCount = this.nodeCount;
265 var nodeFieldCount = this._nodeFieldCount; 265 var nodeFieldCount = this._nodeFieldCount;
266 var firstEdgeIndexes = this._firstEdgeIndexes; 266 var firstEdgeIndexes = this._firstEdgeIndexes;
267 267
268 var flags = this._flags; 268 var flags = this._flags;
269 var list = []; 269 var list = [];
270 270
271 for (var iter = this.rootNode().edges(); iter.hasNext(); iter.next()) { 271 for (var iter = this.rootNode().edges(); iter.hasNext(); iter.next()) {
272 if (iter.edge.node().isUserRoot()) 272 if (iter.edge.node().isUserRoot())
273 list.push(iter.edge.node().nodeIndex / nodeFieldCount); 273 list.push(iter.edge.node().nodeIndex / nodeFieldCount);
(...skipping 21 matching lines...) Expand all
295 295
296 _markPageOwnedNodes: function() 296 _markPageOwnedNodes: function()
297 { 297 {
298 var edgeShortcutType = this._edgeShortcutType; 298 var edgeShortcutType = this._edgeShortcutType;
299 var edgeElementType = this._edgeElementType; 299 var edgeElementType = this._edgeElementType;
300 var edgeToNodeOffset = this._edgeToNodeOffset; 300 var edgeToNodeOffset = this._edgeToNodeOffset;
301 var edgeTypeOffset = this._edgeTypeOffset; 301 var edgeTypeOffset = this._edgeTypeOffset;
302 var edgeFieldsCount = this._edgeFieldsCount; 302 var edgeFieldsCount = this._edgeFieldsCount;
303 var edgeWeakType = this._edgeWeakType; 303 var edgeWeakType = this._edgeWeakType;
304 var firstEdgeIndexes = this._firstEdgeIndexes; 304 var firstEdgeIndexes = this._firstEdgeIndexes;
305 var containmentEdges = this._containmentEdges; 305 var containmentEdges = this.containmentEdges;
306 var containmentEdgesLength = containmentEdges.length; 306 var containmentEdgesLength = containmentEdges.length;
307 var nodes = this._nodes; 307 var nodes = this.nodes;
308 var nodeFieldCount = this._nodeFieldCount; 308 var nodeFieldCount = this._nodeFieldCount;
309 var nodesCount = this.nodeCount; 309 var nodesCount = this.nodeCount;
310 310
311 var flags = this._flags; 311 var flags = this._flags;
312 var flag = this._nodeFlags.pageObject; 312 var flag = this._nodeFlags.pageObject;
313 var visitedMarker = this._nodeFlags.visitedMarker; 313 var visitedMarker = this._nodeFlags.visitedMarker;
314 var visitedMarkerMask = this._nodeFlags.visitedMarkerMask; 314 var visitedMarkerMask = this._nodeFlags.visitedMarkerMask;
315 var markerAndFlag = visitedMarker | flag; 315 var markerAndFlag = visitedMarker | flag;
316 316
317 var nodesToVisit = new Uint32Array(nodesCount); 317 var nodesToVisit = new Uint32Array(nodesCount);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 continue; 351 continue;
352 nodesToVisit[nodesToVisitLength++] = childNodeOrdinal; 352 nodesToVisit[nodesToVisitLength++] = childNodeOrdinal;
353 flags[childNodeOrdinal] |= visitedMarker; 353 flags[childNodeOrdinal] |= visitedMarker;
354 } 354 }
355 } 355 }
356 }, 356 },
357 357
358 _calculateStatistics: function() 358 _calculateStatistics: function()
359 { 359 {
360 var nodeFieldCount = this._nodeFieldCount; 360 var nodeFieldCount = this._nodeFieldCount;
361 var nodes = this._nodes; 361 var nodes = this.nodes;
362 var nodesLength = nodes.length; 362 var nodesLength = nodes.length;
363 var nodeTypeOffset = this._nodeTypeOffset; 363 var nodeTypeOffset = this._nodeTypeOffset;
364 var nodeSizeOffset = this._nodeSelfSizeOffset;; 364 var nodeSizeOffset = this._nodeSelfSizeOffset;;
365 var nodeNativeType = this._nodeNativeType; 365 var nodeNativeType = this._nodeNativeType;
366 var nodeCodeType = this._nodeCodeType; 366 var nodeCodeType = this._nodeCodeType;
367 var nodeConsStringType = this._nodeConsStringType; 367 var nodeConsStringType = this._nodeConsStringType;
368 var nodeSlicedStringType = this._nodeSlicedStringType; 368 var nodeSlicedStringType = this._nodeSlicedStringType;
369 var sizeNative = 0; 369 var sizeNative = 0;
370 var sizeCode = 0; 370 var sizeCode = 0;
371 var sizeStrings = 0; 371 var sizeStrings = 0;
(...skipping 21 matching lines...) Expand all
393 this._statistics.strings = sizeStrings; 393 this._statistics.strings = sizeStrings;
394 }, 394 },
395 395
396 /** 396 /**
397 * @param {!WebInspector.HeapSnapshotNode} node 397 * @param {!WebInspector.HeapSnapshotNode} node
398 * @return {number} 398 * @return {number}
399 */ 399 */
400 _calculateArraySize: function(node) 400 _calculateArraySize: function(node)
401 { 401 {
402 var size = node.selfSize(); 402 var size = node.selfSize();
403 var beginEdgeIndex = node._edgeIndexesStart(); 403 var beginEdgeIndex = node.edgeIndexesStart();
404 var endEdgeIndex = node._edgeIndexesEnd(); 404 var endEdgeIndex = node.edgeIndexesEnd();
405 var containmentEdges = this._containmentEdges; 405 var containmentEdges = this.containmentEdges;
406 var strings = this._strings; 406 var strings = this.strings;
407 var edgeToNodeOffset = this._edgeToNodeOffset; 407 var edgeToNodeOffset = this._edgeToNodeOffset;
408 var edgeTypeOffset = this._edgeTypeOffset; 408 var edgeTypeOffset = this._edgeTypeOffset;
409 var edgeNameOffset = this._edgeNameOffset; 409 var edgeNameOffset = this._edgeNameOffset;
410 var edgeFieldsCount = this._edgeFieldsCount; 410 var edgeFieldsCount = this._edgeFieldsCount;
411 var edgeInternalType = this._edgeInternalType; 411 var edgeInternalType = this._edgeInternalType;
412 for (var edgeIndex = beginEdgeIndex; edgeIndex < endEdgeIndex; edgeIndex += edgeFieldsCount) { 412 for (var edgeIndex = beginEdgeIndex; edgeIndex < endEdgeIndex; edgeIndex += edgeFieldsCount) {
413 var edgeType = containmentEdges[edgeIndex + edgeTypeOffset]; 413 var edgeType = containmentEdges[edgeIndex + edgeTypeOffset];
414 if (edgeType !== edgeInternalType) 414 if (edgeType !== edgeInternalType)
415 continue; 415 continue;
416 var edgeName = strings[containmentEdges[edgeIndex + edgeNameOffset]] ; 416 var edgeName = strings[containmentEdges[edgeIndex + edgeNameOffset]] ;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 476
477 _consStringName: function() 477 _consStringName: function()
478 { 478 {
479 var snapshot = this._snapshot; 479 var snapshot = this._snapshot;
480 var consStringType = snapshot._nodeConsStringType; 480 var consStringType = snapshot._nodeConsStringType;
481 var edgeInternalType = snapshot._edgeInternalType; 481 var edgeInternalType = snapshot._edgeInternalType;
482 var edgeFieldsCount = snapshot._edgeFieldsCount; 482 var edgeFieldsCount = snapshot._edgeFieldsCount;
483 var edgeToNodeOffset = snapshot._edgeToNodeOffset; 483 var edgeToNodeOffset = snapshot._edgeToNodeOffset;
484 var edgeTypeOffset = snapshot._edgeTypeOffset; 484 var edgeTypeOffset = snapshot._edgeTypeOffset;
485 var edgeNameOffset = snapshot._edgeNameOffset; 485 var edgeNameOffset = snapshot._edgeNameOffset;
486 var strings = snapshot._strings; 486 var strings = snapshot.strings;
487 var edges = snapshot._containmentEdges; 487 var edges = snapshot.containmentEdges;
488 var firstEdgeIndexes = snapshot._firstEdgeIndexes; 488 var firstEdgeIndexes = snapshot._firstEdgeIndexes;
489 var nodeFieldCount = snapshot._nodeFieldCount; 489 var nodeFieldCount = snapshot._nodeFieldCount;
490 var nodeTypeOffset = snapshot._nodeTypeOffset; 490 var nodeTypeOffset = snapshot._nodeTypeOffset;
491 var nodeNameOffset = snapshot._nodeNameOffset; 491 var nodeNameOffset = snapshot._nodeNameOffset;
492 var nodes = snapshot._nodes; 492 var nodes = snapshot.nodes;
493 var nodesStack = []; 493 var nodesStack = [];
494 nodesStack.push(this.nodeIndex); 494 nodesStack.push(this.nodeIndex);
495 var name = ""; 495 var name = "";
496 496
497 while (nodesStack.length && name.length < 1024) { 497 while (nodesStack.length && name.length < 1024) {
498 var nodeIndex = nodesStack.pop(); 498 var nodeIndex = nodesStack.pop();
499 if (nodes[nodeIndex + nodeTypeOffset] !== consStringType) { 499 if (nodes[nodeIndex + nodeTypeOffset] !== consStringType) {
500 name += strings[nodes[nodeIndex + nodeNameOffset]]; 500 name += strings[nodes[nodeIndex + nodeNameOffset]];
501 continue; 501 continue;
502 } 502 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 return "(" + type + ")"; 539 return "(" + type + ")";
540 } 540 }
541 }, 541 },
542 542
543 /** 543 /**
544 * @return {number} 544 * @return {number}
545 */ 545 */
546 classIndex: function() 546 classIndex: function()
547 { 547 {
548 var snapshot = this._snapshot; 548 var snapshot = this._snapshot;
549 var nodes = snapshot._nodes; 549 var nodes = snapshot.nodes;
550 var type = nodes[this.nodeIndex + snapshot._nodeTypeOffset];; 550 var type = nodes[this.nodeIndex + snapshot._nodeTypeOffset];;
551 if (type === snapshot._nodeObjectType || type === snapshot._nodeNativeTy pe) 551 if (type === snapshot._nodeObjectType || type === snapshot._nodeNativeTy pe)
552 return nodes[this.nodeIndex + snapshot._nodeNameOffset]; 552 return nodes[this.nodeIndex + snapshot._nodeNameOffset];
553 return -1 - type; 553 return -1 - type;
554 }, 554 },
555 555
556 /** 556 /**
557 * @return {number} 557 * @return {number}
558 */ 558 */
559 id: function() 559 id: function()
560 { 560 {
561 var snapshot = this._snapshot; 561 var snapshot = this._snapshot;
562 return snapshot._nodes[this.nodeIndex + snapshot._nodeIdOffset]; 562 return snapshot.nodes[this.nodeIndex + snapshot._nodeIdOffset];
563 }, 563 },
564 564
565 /** 565 /**
566 * @return {boolean} 566 * @return {boolean}
567 */ 567 */
568 isHidden: function() 568 isHidden: function()
569 { 569 {
570 return this._type() === this._snapshot._nodeHiddenType; 570 return this._type() === this._snapshot._nodeHiddenType;
571 }, 571 },
572 572
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 return "?" + name + "?"; 726 return "?" + name + "?";
727 }, 727 },
728 728
729 _hasStringName: function() 729 _hasStringName: function()
730 { 730 {
731 return !this.isElement() && !this.isHidden(); 731 return !this.isElement() && !this.isHidden();
732 }, 732 },
733 733
734 _name: function() 734 _name: function()
735 { 735 {
736 return this._hasStringName() ? this._snapshot._strings[this._nameOrIndex ()] : this._nameOrIndex(); 736 return this._hasStringName() ? this._snapshot.strings[this._nameOrIndex( )] : this._nameOrIndex();
737 }, 737 },
738 738
739 _nameOrIndex: function() 739 _nameOrIndex: function()
740 { 740 {
741 return this._edges[this.edgeIndex + this._snapshot._edgeNameOffset]; 741 return this._edges[this.edgeIndex + this._snapshot._edgeNameOffset];
742 }, 742 },
743 743
744 _type: function() 744 _type: function()
745 { 745 {
746 return this._edges[this.edgeIndex + this._snapshot._edgeTypeOffset]; 746 return this._edges[this.edgeIndex + this._snapshot._edgeTypeOffset];
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 * @return {boolean} 807 * @return {boolean}
808 */ 808 */
809 isWeak: function() 809 isWeak: function()
810 { 810 {
811 return this._edge().isWeak(); 811 return this._edge().isWeak();
812 }, 812 },
813 813
814 __proto__: WebInspector.HeapSnapshotRetainerEdge.prototype 814 __proto__: WebInspector.HeapSnapshotRetainerEdge.prototype
815 } 815 }
816 816
OLDNEW
« no previous file with comments | « Source/devtools/front_end/profiler/heap_snapshot_worker/HeapSnapshot.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698