• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 *     * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *     * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 *     * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31WebInspector.HeapSnapshotProgressEvent = {
32    Update: "ProgressUpdate"
33};
34
35WebInspector.HeapSnapshotCommon = {
36}
37
38WebInspector.HeapSnapshotCommon.baseSystemDistance = 100000000;
39
40/**
41 * @param {!Array.<!WebInspector.HeapSnapshotCommon.SerializedAllocationNode>} nodesWithSingleCaller
42 * @param {!Array.<!WebInspector.HeapSnapshotCommon.SerializedAllocationNode>} branchingCallers
43 * @constructor
44 */
45WebInspector.HeapSnapshotCommon.AllocationNodeCallers = function(nodesWithSingleCaller, branchingCallers)
46{
47    /** @type {!Array.<!WebInspector.HeapSnapshotCommon.SerializedAllocationNode>} */
48    this.nodesWithSingleCaller = nodesWithSingleCaller;
49    /** @type {!Array.<!WebInspector.HeapSnapshotCommon.SerializedAllocationNode>} */
50    this.branchingCallers = branchingCallers;
51}
52
53/**
54 * @param {number} nodeId
55 * @param {string} functionName
56 * @param {string} scriptName
57 * @param {number} scriptId
58 * @param {number} line
59 * @param {number} column
60 * @param {number} count
61 * @param {number} size
62 * @param {number} liveCount
63 * @param {number} liveSize
64 * @param {boolean} hasChildren
65 * @constructor
66 */
67WebInspector.HeapSnapshotCommon.SerializedAllocationNode = function(nodeId, functionName, scriptName, scriptId, line, column, count, size, liveCount, liveSize, hasChildren)
68{
69    /** @type {number} */
70    this.id = nodeId;
71    /** @type {string} */
72    this.name = functionName;
73    /** @type {string} */
74    this.scriptName = scriptName;
75    /** @type {number} */
76    this.scriptId = scriptId;
77    /** @type {number} */
78    this.line = line;
79    /** @type {number} */
80    this.column = column;
81    /** @type {number} */
82    this.count = count;
83    /** @type {number} */
84    this.size = size;
85    /** @type {number} */
86    this.liveCount = liveCount;
87    /** @type {number} */
88    this.liveSize = liveSize;
89    /** @type {boolean} */
90    this.hasChildren = hasChildren;
91}
92
93/**
94 * @param {string} functionName
95 * @param {string} scriptName
96 * @param {number} scriptId
97 * @param {number} line
98 * @param {number} column
99 * @constructor
100 */
101WebInspector.HeapSnapshotCommon.AllocationStackFrame = function(functionName, scriptName, scriptId, line, column)
102{
103    /** @type {string} */
104    this.functionName = functionName;
105    /** @type {string} */
106    this.scriptName = scriptName;
107    /** @type {number} */
108    this.scriptId = scriptId;
109    /** @type {number} */
110    this.line = line;
111    /** @type {number} */
112    this.column = column;
113}
114
115/**
116 * @constructor
117 * @param {number} id
118 * @param {string} name
119 * @param {number} distance
120 * @param {number} nodeIndex
121 * @param {number} retainedSize
122 * @param {number} selfSize
123 * @param {string} type
124 */
125WebInspector.HeapSnapshotCommon.Node = function(id, name, distance, nodeIndex, retainedSize, selfSize, type)
126{
127    this.id = id;
128    this.name = name;
129    this.distance = distance;
130    this.nodeIndex = nodeIndex;
131    this.retainedSize = retainedSize;
132    this.selfSize = selfSize;
133    this.type = type;
134
135    this.canBeQueried = false;
136    this.detachedDOMTreeNode = false;
137}
138
139/**
140 * @constructor
141 * @param {string} name
142 * @param {!WebInspector.HeapSnapshotCommon.Node} node
143 * @param {string} type
144 * @param {number} edgeIndex
145 */
146WebInspector.HeapSnapshotCommon.Edge = function(name, node, type, edgeIndex)
147{
148    this.name = name;
149    this.node = node;
150    this.type = type;
151    this.edgeIndex = edgeIndex;
152};
153
154/**
155 * @constructor
156 */
157WebInspector.HeapSnapshotCommon.Aggregate = function()
158{
159    /** @type {number} */
160    this.count;
161    /** @type {number} */
162    this.distance;
163    /** @type {number} */
164    this.self;
165    /** @type {number} */
166    this.maxRet;
167    /** @type {number} */
168    this.type;
169    /** @type {string} */
170    this.name;
171    /** @type {!Array.<number>} */
172    this.idxs;
173}
174
175/**
176 * @constructor
177 */
178WebInspector.HeapSnapshotCommon.AggregateForDiff = function() {
179    /** @type {!Array.<number>} */
180    this.indexes = [];
181    /** @type {!Array.<string>} */
182    this.ids = [];
183    /** @type {!Array.<number>} */
184    this.selfSizes = [];
185}
186
187/**
188 * @constructor
189 */
190WebInspector.HeapSnapshotCommon.Diff = function()
191{
192    /** @type {number} */
193    this.addedCount = 0;
194    /** @type {number} */
195    this.removedCount = 0;
196    /** @type {number} */
197    this.addedSize = 0;
198    /** @type {number} */
199    this.removedSize = 0;
200    /** @type {!Array.<number>} */
201    this.deletedIndexes = [];
202    /** @type {!Array.<number>} */
203    this.addedIndexes = [];
204}
205
206/**
207 * @constructor
208 */
209WebInspector.HeapSnapshotCommon.DiffForClass = function()
210{
211    /** @type {number} */
212    this.addedCount;
213    /** @type {number} */
214    this.removedCount;
215    /** @type {number} */
216    this.addedSize;
217    /** @type {number} */
218    this.removedSize;
219    /** @type {!Array.<number>} */
220    this.deletedIndexes;
221    /** @type {!Array.<number>} */
222    this.addedIndexes;
223
224    /** @type {number} */
225    this.countDelta;
226    /** @type {number} */
227    this.sizeDelta;
228}
229
230/**
231 * @constructor
232 */
233WebInspector.HeapSnapshotCommon.ComparatorConfig = function()
234{
235    /** @type {string} */
236    this.fieldName1;
237    /** @type {boolean} */
238    this.ascending1;
239    /** @type {string} */
240    this.fieldName2;
241    /** @type {boolean} */
242    this.ascending2;
243}
244
245/**
246 * @constructor
247 */
248WebInspector.HeapSnapshotCommon.WorkerCommand = function()
249{
250    /** @type {number} */
251    this.callId;
252    /** @type {string} */
253    this.disposition;
254    /** @type {number} */
255    this.objectId;
256    /** @type {number} */
257    this.newObjectId;
258    /** @type {string} */
259    this.methodName;
260    /** @type {!Array.<*>} */
261    this.methodArguments;
262    /** @type {string} */
263    this.source;
264}
265
266/**
267 * @constructor
268 * @param {number} startPosition
269 * @param {number} endPosition
270 * @param {number} totalLength
271 * @param {!Array.<*>} items
272 */
273WebInspector.HeapSnapshotCommon.ItemsRange = function(startPosition, endPosition, totalLength, items)
274{
275    /** @type {number} */
276    this.startPosition = startPosition;
277    /** @type {number} */
278    this.endPosition = endPosition;
279    /** @type {number} */
280    this.totalLength = totalLength;
281    /** @type {!Array.<*>} */
282    this.items = items;
283}
284
285/**
286 * @param {number} nodeCount
287 * @param {number} rootNodeIndex
288 * @param {number} totalSize
289 * @param {number} maxJSObjectId
290 * @constructor
291 */
292WebInspector.HeapSnapshotCommon.StaticData = function(nodeCount, rootNodeIndex, totalSize, maxJSObjectId)
293{
294    /** @type {number} */
295    this.nodeCount = nodeCount;
296    /** @type {number} */
297    this.rootNodeIndex = rootNodeIndex;
298    /** @type {number} */
299    this.totalSize = totalSize;
300    /** @type {number} */
301    this.maxJSObjectId = maxJSObjectId;
302}
303
304/**
305 * @constructor
306 */
307WebInspector.HeapSnapshotCommon.Statistics = function()
308{
309    /** @type {number} */
310    this.total;
311    /** @type {number} */
312    this.v8heap;
313    /** @type {number} */
314    this.native;
315    /** @type {number} */
316    this.code;
317    /** @type {number} */
318    this.jsArrays;
319    /** @type {number} */
320    this.strings;
321}
322
323
324/**
325 * @param {number=} minNodeId
326 * @param {number=} maxNodeId
327 * @constructor
328 */
329WebInspector.HeapSnapshotCommon.NodeFilter = function(minNodeId, maxNodeId)
330{
331    /** @type {number|undefined} */
332    this.minNodeId = minNodeId;
333    /** @type {number|undefined} */
334    this.maxNodeId = maxNodeId;
335    /** @type {number|undefined} */
336    this.allocationNodeId;
337}
338
339WebInspector.HeapSnapshotCommon.NodeFilter.prototype =
340{
341    /**
342     * @param {!WebInspector.HeapSnapshotCommon.NodeFilter} o
343     * @return {boolean}
344     */
345    equals: function(o)
346    {
347        return this.minNodeId === o.minNodeId && this.maxNodeId === o.maxNodeId && this.allocationNodeId === o.allocationNodeId;
348    }
349}
350