chrome-devtools-frontend 1.0.951864 → 1.0.952284
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/front_end/.eslintrc.js +6 -0
- package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +36 -36
- package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +53 -53
- package/front_end/entrypoints/formatter_worker/ESTreeWalker.ts +11 -11
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +43 -43
- package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +106 -105
- package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +26 -26
- package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +50 -55
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +200 -200
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +84 -83
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotWorkerDispatcher.ts +15 -15
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +21 -21
- package/front_end/entrypoints/main/ExecutionContextSelector.ts +30 -30
- package/front_end/entrypoints/main/MainImpl.ts +12 -12
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +33 -33
- package/front_end/entrypoints/node_app/NodeMain.ts +35 -35
- package/front_end/generated/InspectorBackendCommands.js +5 -1
- package/front_end/generated/protocol.d.ts +16 -0
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +6 -6
- package/front_end/models/issues_manager/ContrastCheckTrigger.ts +15 -15
- package/front_end/models/issues_manager/CorsIssue.ts +9 -9
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/DeprecationIssue.ts +7 -7
- package/front_end/models/issues_manager/GenericIssue.ts +5 -5
- package/front_end/models/issues_manager/HeavyAdIssue.ts +5 -5
- package/front_end/models/issues_manager/Issue.ts +10 -10
- package/front_end/models/issues_manager/IssueResolver.ts +11 -10
- package/front_end/models/issues_manager/IssuesManager.ts +56 -56
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +4 -4
- package/front_end/models/issues_manager/MixedContentIssue.ts +7 -7
- package/front_end/models/issues_manager/NavigatorUserAgentIssue.ts +7 -7
- package/front_end/models/issues_manager/QuirksModeIssue.ts +4 -4
- package/front_end/models/issues_manager/SameSiteCookieIssue.ts +16 -16
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +5 -5
- package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +32 -31
- package/front_end/models/issues_manager/TrustedWebActivityIssue.ts +5 -5
- package/front_end/models/issues_manager/WasmCrossOriginModuleSharingIssue.ts +5 -5
- package/front_end/panels/application/components/BackForwardCacheView.ts +33 -33
- package/front_end/panels/application/components/EndpointsGrid.ts +12 -12
- package/front_end/panels/application/components/FrameDetailsView.ts +108 -110
- package/front_end/panels/application/components/OriginTrialTreeView.ts +45 -45
- package/front_end/panels/application/components/PermissionsPolicySection.ts +19 -19
- package/front_end/panels/application/components/ReportsGrid.ts +30 -30
- package/front_end/panels/application/components/StackTrace.ts +48 -47
- package/front_end/panels/application/components/TrustTokensView.ts +31 -31
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +41 -52
- package/front_end/panels/css_overview/CSSOverviewController.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +18 -27
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +6 -6
- package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +4 -4
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +17 -17
- package/front_end/panels/elements/components/AdornerManager.ts +21 -21
- package/front_end/panels/elements/components/AdornerSettingsPane.ts +14 -14
- package/front_end/panels/elements/components/CSSQuery.ts +16 -16
- package/front_end/panels/elements/components/ComputedStyleProperty.ts +14 -14
- package/front_end/panels/elements/components/ComputedStyleTrace.ts +15 -15
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +78 -78
- package/front_end/panels/elements/components/ElementsPanelLink.ts +16 -16
- package/front_end/panels/elements/components/LayoutPane.ts +47 -47
- package/front_end/panels/elements/components/NodeText.ts +18 -18
- package/front_end/panels/elements/components/QueryContainer.ts +40 -40
- package/front_end/panels/elements/components/StylePropertyEditor.ts +18 -18
- package/front_end/panels/emulation/components/DeviceSizeInputElement.ts +4 -4
- package/front_end/panels/issues/AffectedBlockedByResponseView.ts +4 -4
- package/front_end/panels/issues/AffectedCookiesView.ts +4 -5
- package/front_end/panels/issues/AffectedDirectivesView.ts +19 -19
- package/front_end/panels/issues/AffectedDocumentsInQuirksModeView.ts +7 -8
- package/front_end/panels/issues/AffectedElementsView.ts +4 -4
- package/front_end/panels/issues/AffectedElementsWithLowContrastView.ts +7 -8
- package/front_end/panels/issues/AffectedHeavyAdView.ts +8 -8
- package/front_end/panels/issues/AffectedResourcesView.ts +25 -26
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +8 -8
- package/front_end/panels/issues/AffectedSourcesView.ts +4 -4
- package/front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts +4 -4
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +17 -17
- package/front_end/panels/issues/CSPViolationsListView.ts +22 -23
- package/front_end/panels/issues/CSPViolationsView.ts +17 -17
- package/front_end/panels/issues/ComboBoxOfCheckBoxes.ts +13 -13
- package/front_end/panels/issues/CorsIssueDetailsView.ts +23 -23
- package/front_end/panels/issues/GenericIssueDetailsView.ts +4 -4
- package/front_end/panels/issues/HiddenIssuesRow.ts +7 -7
- package/front_end/panels/issues/IssueAggregator.ts +95 -95
- package/front_end/panels/issues/IssueKindView.ts +14 -14
- package/front_end/panels/issues/IssueView.ts +98 -98
- package/front_end/panels/issues/IssuesPane.ts +102 -102
- package/front_end/panels/issues/WasmCrossOriginModuleSharingAffectedResourcesView.ts +5 -5
- package/front_end/panels/issues/components/HideIssuesMenu.ts +10 -10
- package/front_end/panels/media/PlayerListView.ts +160 -97
- package/front_end/panels/media/PlayerMessagesView.ts +1 -0
- package/front_end/panels/media/playerListView.css +58 -0
- package/front_end/panels/network/NetworkLogView.ts +2 -6
- package/front_end/panels/network/NetworkWaterfallColumn.ts +2 -4
- package/front_end/panels/network/components/RequestTrustTokensView.ts +40 -40
- package/front_end/panels/network/components/WebBundleInfoView.ts +9 -9
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +6 -12
- package/front_end/panels/settings/components/SyncSection.ts +14 -14
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +96 -96
- package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
- package/front_end/panels/timeline/components/WebVitalsLane.ts +77 -76
- package/front_end/panels/timeline/components/WebVitalsTimeline.ts +133 -133
- package/front_end/panels/timeline/components/WebVitalsTooltip.ts +9 -9
- package/front_end/panels/webauthn/WebauthnPane.ts +203 -205
- package/front_end/ui/components/adorners/Adorner.ts +2 -2
- package/front_end/ui/components/buttons/Button.ts +9 -9
- package/front_end/ui/components/data_grid/DataGrid.ts +62 -62
- package/front_end/ui/components/data_grid/DataGridController.ts +22 -22
- package/front_end/ui/components/diff_view/DiffView.ts +6 -6
- package/front_end/ui/components/expandable_list/ExpandableList.ts +5 -5
- package/front_end/ui/components/icon_button/Icon.ts +4 -4
- package/front_end/ui/components/icon_button/IconButton.ts +4 -4
- package/front_end/ui/components/issue_counter/IssueCounter.ts +3 -3
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +11 -11
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +50 -50
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +6 -6
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +4 -4
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryNavigator.ts +12 -12
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +11 -11
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryViewer.ts +40 -39
- package/front_end/ui/components/linear_memory_inspector/ValueInterpreterDisplay.ts +18 -18
- package/front_end/ui/components/linear_memory_inspector/ValueInterpreterSettings.ts +6 -6
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +4 -4
- package/front_end/ui/components/markdown_view/MarkdownImage.ts +5 -5
- package/front_end/ui/components/markdown_view/MarkdownLink.ts +2 -2
- package/front_end/ui/components/markdown_view/MarkdownView.ts +4 -4
- package/front_end/ui/components/panel_feedback/FeedbackButton.ts +2 -2
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +2 -2
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +4 -4
- package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +22 -22
- package/front_end/ui/components/report_view/ReportView.ts +16 -16
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +14 -14
- package/front_end/ui/components/settings/SettingCheckbox.ts +5 -5
- package/front_end/ui/components/survey_link/SurveyLink.ts +8 -8
- package/front_end/ui/components/text_editor/TextEditor.ts +9 -9
- package/front_end/ui/components/text_prompt/TextPrompt.ts +18 -18
- package/front_end/ui/components/tree_outline/TreeOutline.ts +69 -70
- package/front_end/ui/legacy/themeColors.css +2 -0
- package/front_end/ui/legacy/theme_support/theme_support_impl.ts +12 -0
- package/package.json +1 -1
- package/scripts/eslint_rules/lib/use_private_class_members.js +41 -0
- package/scripts/eslint_rules/tests/use_private_class_members_test.js +62 -0
- package/scripts/migration/class-fields/migrate.js +2 -3
- package/scripts/migration/class-fields/migrate.sh +1 -3
- package/scripts/migration/class-fields/package.json +1 -1
|
@@ -33,43 +33,38 @@ import * as HeapSnapshotModel from '../../models/heap_snapshot_model/heap_snapsh
|
|
|
33
33
|
export class AllocationProfile {
|
|
34
34
|
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
|
|
35
35
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
private readonly idToTopDownNode: {[x: number]: TopDownAllocationNode};
|
|
44
|
-
private collapsedTopNodeIdToFunctionInfo: {[x: number]: FunctionAllocationInfo};
|
|
45
|
-
private traceTops: HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode[]|null;
|
|
46
|
-
private readonly traceTree: TopDownAllocationNode;
|
|
36
|
+
readonly #strings: any;
|
|
37
|
+
#nextNodeId: number;
|
|
38
|
+
#functionInfos: FunctionAllocationInfo[];
|
|
39
|
+
#idToNode: {[x: number]: BottomUpAllocationNode|null};
|
|
40
|
+
readonly #idToTopDownNode: {[x: number]: TopDownAllocationNode};
|
|
41
|
+
#collapsedTopNodeIdToFunctionInfo: {[x: number]: FunctionAllocationInfo};
|
|
42
|
+
#traceTops: HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode[]|null;
|
|
47
43
|
|
|
48
44
|
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
|
|
49
45
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
46
|
constructor(profile: any, liveObjectStats: any) {
|
|
51
|
-
this
|
|
52
|
-
this.liveObjectStats = liveObjectStats;
|
|
47
|
+
this.#strings = profile.strings;
|
|
53
48
|
|
|
54
|
-
this
|
|
55
|
-
this
|
|
49
|
+
this.#nextNodeId = 1;
|
|
50
|
+
this.#functionInfos = [];
|
|
56
51
|
|
|
57
|
-
this
|
|
52
|
+
this.#idToNode = {};
|
|
58
53
|
|
|
59
|
-
this
|
|
54
|
+
this.#idToTopDownNode = {};
|
|
60
55
|
|
|
61
|
-
this
|
|
56
|
+
this.#collapsedTopNodeIdToFunctionInfo = {};
|
|
62
57
|
|
|
63
|
-
this
|
|
58
|
+
this.#traceTops = null;
|
|
64
59
|
|
|
65
60
|
this.buildFunctionAllocationInfos(profile);
|
|
66
|
-
this.
|
|
61
|
+
this.buildAllocationTree(profile, liveObjectStats);
|
|
67
62
|
}
|
|
68
63
|
|
|
69
64
|
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
|
|
70
65
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
66
|
private buildFunctionAllocationInfos(profile: any): void {
|
|
72
|
-
const strings = this
|
|
67
|
+
const strings = this.#strings;
|
|
73
68
|
|
|
74
69
|
const functionInfoFields = profile.snapshot.meta.trace_function_info_fields;
|
|
75
70
|
const functionNameOffset = functionInfoFields.indexOf('name');
|
|
@@ -81,7 +76,7 @@ export class AllocationProfile {
|
|
|
81
76
|
|
|
82
77
|
const rawInfos = profile.trace_function_infos;
|
|
83
78
|
const infoLength = rawInfos.length;
|
|
84
|
-
const functionInfos = this
|
|
79
|
+
const functionInfos = this.#functionInfos = new Array(infoLength / functionInfoFieldCount);
|
|
85
80
|
let index = 0;
|
|
86
81
|
for (let i = 0; i < infoLength; i += functionInfoFieldCount) {
|
|
87
82
|
functionInfos[index++] = new FunctionAllocationInfo(
|
|
@@ -94,8 +89,8 @@ export class AllocationProfile {
|
|
|
94
89
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
90
|
private buildAllocationTree(profile: any, liveObjectStats: any): TopDownAllocationNode {
|
|
96
91
|
const traceTreeRaw = profile.trace_tree;
|
|
97
|
-
const functionInfos = this
|
|
98
|
-
const idToTopDownNode = this
|
|
92
|
+
const functionInfos = this.#functionInfos;
|
|
93
|
+
const idToTopDownNode = this.#idToTopDownNode;
|
|
99
94
|
|
|
100
95
|
const traceNodeFields = profile.snapshot.meta.trace_node_fields;
|
|
101
96
|
const nodeIdOffset = traceNodeFields.indexOf('id');
|
|
@@ -132,22 +127,22 @@ export class AllocationProfile {
|
|
|
132
127
|
}
|
|
133
128
|
|
|
134
129
|
serializeTraceTops(): HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode[] {
|
|
135
|
-
if (this
|
|
136
|
-
return this
|
|
130
|
+
if (this.#traceTops) {
|
|
131
|
+
return this.#traceTops;
|
|
137
132
|
}
|
|
138
133
|
|
|
139
|
-
const result: HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode[] = this
|
|
140
|
-
const functionInfos = this
|
|
134
|
+
const result: HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode[] = this.#traceTops = [];
|
|
135
|
+
const functionInfos = this.#functionInfos;
|
|
141
136
|
for (let i = 0; i < functionInfos.length; i++) {
|
|
142
137
|
const info = functionInfos[i];
|
|
143
138
|
if (info.totalCount === 0) {
|
|
144
139
|
continue;
|
|
145
140
|
}
|
|
146
|
-
const nodeId = this
|
|
141
|
+
const nodeId = this.#nextNodeId++;
|
|
147
142
|
const isRoot = i === 0;
|
|
148
143
|
result.push(this.serializeNode(
|
|
149
144
|
nodeId, info, info.totalCount, info.totalSize, info.totalLiveCount, info.totalLiveSize, !isRoot));
|
|
150
|
-
this
|
|
145
|
+
this.#collapsedTopNodeIdToFunctionInfo[nodeId] = info;
|
|
151
146
|
}
|
|
152
147
|
result.sort(function(a, b) {
|
|
153
148
|
return b.size - a.size;
|
|
@@ -173,7 +168,7 @@ export class AllocationProfile {
|
|
|
173
168
|
}
|
|
174
169
|
|
|
175
170
|
serializeAllocationStack(traceNodeId: number): HeapSnapshotModel.HeapSnapshotModel.AllocationStackFrame[] {
|
|
176
|
-
let node: (TopDownAllocationNode|null)|TopDownAllocationNode = this
|
|
171
|
+
let node: (TopDownAllocationNode|null)|TopDownAllocationNode = this.#idToTopDownNode[traceNodeId];
|
|
177
172
|
const result = [];
|
|
178
173
|
while (node) {
|
|
179
174
|
const functionInfo = node.functionInfo;
|
|
@@ -190,19 +185,19 @@ export class AllocationProfile {
|
|
|
190
185
|
}
|
|
191
186
|
|
|
192
187
|
private ensureBottomUpNode(nodeId: number): BottomUpAllocationNode {
|
|
193
|
-
let node = this
|
|
188
|
+
let node = this.#idToNode[nodeId];
|
|
194
189
|
if (!node) {
|
|
195
|
-
const functionInfo = this
|
|
190
|
+
const functionInfo = this.#collapsedTopNodeIdToFunctionInfo[nodeId];
|
|
196
191
|
node = functionInfo.bottomUpRoot();
|
|
197
|
-
delete this
|
|
198
|
-
this
|
|
192
|
+
delete this.#collapsedTopNodeIdToFunctionInfo[nodeId];
|
|
193
|
+
this.#idToNode[nodeId] = node;
|
|
199
194
|
}
|
|
200
195
|
return node as BottomUpAllocationNode;
|
|
201
196
|
}
|
|
202
197
|
|
|
203
198
|
private serializeCaller(node: BottomUpAllocationNode): HeapSnapshotModel.HeapSnapshotModel.SerializedAllocationNode {
|
|
204
|
-
const callerId = this
|
|
205
|
-
this
|
|
199
|
+
const callerId = this.#nextNodeId++;
|
|
200
|
+
this.#idToNode[callerId] = node;
|
|
206
201
|
return this.serializeNode(
|
|
207
202
|
callerId, node.functionInfo, node.allocationCount, node.allocationSize, node.liveCount, node.liveSize,
|
|
208
203
|
node.hasCallers());
|
|
@@ -248,7 +243,7 @@ export class BottomUpAllocationNode {
|
|
|
248
243
|
liveCount: number;
|
|
249
244
|
liveSize: number;
|
|
250
245
|
traceTopIds: number[];
|
|
251
|
-
|
|
246
|
+
readonly #callersInternal: BottomUpAllocationNode[];
|
|
252
247
|
constructor(functionInfo: FunctionAllocationInfo) {
|
|
253
248
|
this.functionInfo = functionInfo;
|
|
254
249
|
this.allocationCount = 0;
|
|
@@ -258,14 +253,14 @@ export class BottomUpAllocationNode {
|
|
|
258
253
|
|
|
259
254
|
this.traceTopIds = [];
|
|
260
255
|
|
|
261
|
-
this
|
|
256
|
+
this.#callersInternal = [];
|
|
262
257
|
}
|
|
263
258
|
|
|
264
259
|
addCaller(traceNode: TopDownAllocationNode): BottomUpAllocationNode {
|
|
265
260
|
const functionInfo = traceNode.functionInfo;
|
|
266
261
|
let result;
|
|
267
|
-
for (let i = 0; i < this
|
|
268
|
-
const caller = this
|
|
262
|
+
for (let i = 0; i < this.#callersInternal.length; i++) {
|
|
263
|
+
const caller = this.#callersInternal[i];
|
|
269
264
|
if (caller.functionInfo === functionInfo) {
|
|
270
265
|
result = caller;
|
|
271
266
|
break;
|
|
@@ -273,17 +268,17 @@ export class BottomUpAllocationNode {
|
|
|
273
268
|
}
|
|
274
269
|
if (!result) {
|
|
275
270
|
result = new BottomUpAllocationNode(functionInfo);
|
|
276
|
-
this
|
|
271
|
+
this.#callersInternal.push(result);
|
|
277
272
|
}
|
|
278
273
|
return result;
|
|
279
274
|
}
|
|
280
275
|
|
|
281
276
|
callers(): BottomUpAllocationNode[] {
|
|
282
|
-
return this
|
|
277
|
+
return this.#callersInternal;
|
|
283
278
|
}
|
|
284
279
|
|
|
285
280
|
hasCallers(): boolean {
|
|
286
|
-
return this
|
|
281
|
+
return this.#callersInternal.length > 0;
|
|
287
282
|
}
|
|
288
283
|
}
|
|
289
284
|
|
|
@@ -297,8 +292,8 @@ export class FunctionAllocationInfo {
|
|
|
297
292
|
totalSize: number;
|
|
298
293
|
totalLiveCount: number;
|
|
299
294
|
totalLiveSize: number;
|
|
300
|
-
|
|
301
|
-
|
|
295
|
+
#traceTops: TopDownAllocationNode[];
|
|
296
|
+
#bottomUpTree?: BottomUpAllocationNode;
|
|
302
297
|
constructor(functionName: string, scriptName: string, scriptId: number, line: number, column: number) {
|
|
303
298
|
this.functionName = functionName;
|
|
304
299
|
this.scriptName = scriptName;
|
|
@@ -310,14 +305,14 @@ export class FunctionAllocationInfo {
|
|
|
310
305
|
this.totalLiveCount = 0;
|
|
311
306
|
this.totalLiveSize = 0;
|
|
312
307
|
|
|
313
|
-
this
|
|
308
|
+
this.#traceTops = [];
|
|
314
309
|
}
|
|
315
310
|
|
|
316
311
|
addTraceTopNode(node: TopDownAllocationNode): void {
|
|
317
312
|
if (node.allocationCount === 0) {
|
|
318
313
|
return;
|
|
319
314
|
}
|
|
320
|
-
this
|
|
315
|
+
this.#traceTops.push(node);
|
|
321
316
|
this.totalCount += node.allocationCount;
|
|
322
317
|
this.totalSize += node.allocationSize;
|
|
323
318
|
this.totalLiveCount += node.liveCount;
|
|
@@ -325,21 +320,21 @@ export class FunctionAllocationInfo {
|
|
|
325
320
|
}
|
|
326
321
|
|
|
327
322
|
bottomUpRoot(): BottomUpAllocationNode|null {
|
|
328
|
-
if (!this
|
|
323
|
+
if (!this.#traceTops.length) {
|
|
329
324
|
return null;
|
|
330
325
|
}
|
|
331
|
-
if (!this
|
|
326
|
+
if (!this.#bottomUpTree) {
|
|
332
327
|
this.buildAllocationTraceTree();
|
|
333
328
|
}
|
|
334
|
-
return this
|
|
329
|
+
return this.#bottomUpTree as BottomUpAllocationNode;
|
|
335
330
|
}
|
|
336
331
|
|
|
337
332
|
private buildAllocationTraceTree(): void {
|
|
338
|
-
this
|
|
333
|
+
this.#bottomUpTree = new BottomUpAllocationNode(this);
|
|
339
334
|
|
|
340
|
-
for (let i = 0; i < this
|
|
341
|
-
let node: (TopDownAllocationNode|null)|TopDownAllocationNode = this
|
|
342
|
-
let bottomUpNode: BottomUpAllocationNode = this
|
|
335
|
+
for (let i = 0; i < this.#traceTops.length; i++) {
|
|
336
|
+
let node: (TopDownAllocationNode|null)|TopDownAllocationNode = this.#traceTops[i];
|
|
337
|
+
let bottomUpNode: BottomUpAllocationNode = this.#bottomUpTree;
|
|
343
338
|
const count = node.allocationCount;
|
|
344
339
|
const size = node.allocationSize;
|
|
345
340
|
const liveCount = node.liveCount;
|