warpo 3.0.0 → 3.1.0
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/dist/debug_server/debugSession.d.ts +17 -1
- package/dist/debug_server/debugSession.js +169 -7
- package/dist/debug_server/debugSession.js.map +1 -1
- package/dist/debug_server/debugger.d.ts +25 -0
- package/dist/debug_server/debugger.js +4 -0
- package/dist/debug_server/debugger.js.map +1 -0
- package/dist/debug_server/debuggerWasmModule.d.ts +28 -0
- package/dist/debug_server/debuggerWasmModule.js +75 -0
- package/dist/debug_server/debuggerWasmModule.js.map +1 -0
- package/dist/debug_server/nodeDebugger.d.ts +27 -0
- package/dist/debug_server/nodeDebugger.js +240 -0
- package/dist/debug_server/nodeDebugger.js.map +1 -0
- package/dist/debug_server/tests/debugSession.test.js +45 -1
- package/dist/debug_server/tests/debugSession.test.js.map +1 -1
- package/dist/debug_server/tests/testModule/debugger_basic.d.ts +1 -0
- package/dist/debug_server/tests/testModule/debugger_basic.js +6 -0
- package/dist/debug_server/tests/testModule/debugger_basic.js.map +1 -0
- package/dist/debug_server/wasmEntry.js +36 -0
- package/dist/debug_server/wasmEntry.js.map +1 -0
- package/dist/heap_analyzer/src/comparison.d.ts +2 -0
- package/dist/heap_analyzer/src/comparison.js +77 -0
- package/dist/heap_analyzer/src/comparison.js.map +1 -0
- package/dist/heap_analyzer/src/constants.d.ts +1 -1
- package/dist/heap_analyzer/src/constants.js +1 -1
- package/dist/heap_analyzer/src/debugInfoResolver.d.ts +30 -0
- package/dist/heap_analyzer/src/debugInfoResolver.js +334 -0
- package/dist/heap_analyzer/src/debugInfoResolver.js.map +1 -0
- package/dist/heap_analyzer/src/dumpReader.js +11 -2
- package/dist/heap_analyzer/src/dumpReader.js.map +1 -1
- package/dist/heap_analyzer/src/dwarfParser.d.ts +30 -9
- package/dist/heap_analyzer/src/dwarfParser.js +54 -20
- package/dist/heap_analyzer/src/dwarfParser.js.map +1 -1
- package/dist/heap_analyzer/src/index.d.ts +7 -0
- package/dist/heap_analyzer/src/index.js +16 -0
- package/dist/heap_analyzer/src/index.js.map +1 -0
- package/dist/heap_analyzer/src/referenceScanner.d.ts +4 -4
- package/dist/heap_analyzer/src/referenceScanner.js +52 -21
- package/dist/heap_analyzer/src/referenceScanner.js.map +1 -1
- package/dist/heap_analyzer/src/roots.d.ts +3 -6
- package/dist/heap_analyzer/src/roots.js +12 -5
- package/dist/heap_analyzer/src/roots.js.map +1 -1
- package/dist/heap_analyzer/src/snapshot.d.ts +2 -2
- package/dist/heap_analyzer/src/snapshot.js +36 -88
- package/dist/heap_analyzer/src/snapshot.js.map +1 -1
- package/dist/heap_analyzer/src/types.d.ts +54 -11
- package/dist/heap_analyzer/src/types.js +22 -1
- package/dist/heap_analyzer/src/types.js.map +1 -1
- package/dist/heap_analyzer/tests/comparison.test.d.ts +1 -0
- package/dist/heap_analyzer/tests/comparison.test.js +121 -0
- package/dist/heap_analyzer/tests/comparison.test.js.map +1 -0
- package/dist/heap_analyzer/tests/debugInfoResolver.test.d.ts +1 -0
- package/dist/heap_analyzer/tests/debugInfoResolver.test.js +205 -0
- package/dist/heap_analyzer/tests/debugInfoResolver.test.js.map +1 -0
- package/dist/heap_analyzer/tests/dumpReader.test.js +12 -2
- package/dist/heap_analyzer/tests/dumpReader.test.js.map +1 -1
- package/dist/heap_analyzer/tests/dwarfParser.test.js +40 -28
- package/dist/heap_analyzer/tests/dwarfParser.test.js.map +1 -1
- package/dist/heap_analyzer/tests/roots.test.js +21 -4
- package/dist/heap_analyzer/tests/roots.test.js.map +1 -1
- package/dist/heap_analyzer/tests/snapshot.test.js +58 -54
- package/dist/heap_analyzer/tests/snapshot.test.js.map +1 -1
- package/dist/heap_analyzer/tests/testHelper.js +1 -1
- package/dist/heap_analyzer/tests/testHelper.js.map +1 -1
- package/dist/heap_analyzer/tests/wasmExecutor.js +2 -1
- package/dist/heap_analyzer/tests/wasmExecutor.js.map +1 -1
- package/dist/scripts/lib.d.ts +5 -1
- package/dist/scripts/lib.js +171 -24
- package/dist/scripts/lib.js.map +1 -1
- package/dist/test_runner/core/compiler.js +0 -1
- package/dist/test_runner/core/compiler.js.map +1 -1
- package/dist/warpo.d.ts +12 -1
- package/dist/warpo.js +32 -7
- package/dist/warpo.js.map +1 -1
- package/dist/warpo_internal.d.ts +1 -1
- package/dist/warpo_internal.js +23 -14
- package/dist/warpo_internal.js.map +1 -1
- package/package.json +9 -1
- package/dist/heap_analyzer/src/classResolver.d.ts +0 -34
- package/dist/heap_analyzer/src/classResolver.js +0 -206
- package/dist/heap_analyzer/src/classResolver.js.map +0 -1
- package/dist/heap_analyzer/tests/classResolver.test.js +0 -110
- package/dist/heap_analyzer/tests/classResolver.test.js.map +0 -1
- /package/dist/{heap_analyzer/tests/classResolver.test.d.ts → debug_server/wasmEntry.d.ts} +0 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// Copyright (C) 2026 wasm-ecosystem
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { DW_AT, DW_TAG, buildOffsetMap, findDIEsByTag, getAttr, parseWasmDebugInfo, } from "./dwarfParser.js";
|
|
4
|
+
import { BuiltinContainerKind } from "./types.js";
|
|
5
|
+
function shouldKeepClassLayout(classLayout) {
|
|
6
|
+
return classLayout.rtid !== 0 || classLayout.name === "~lib/object/Object";
|
|
7
|
+
}
|
|
8
|
+
function computeFieldExtent(fields) {
|
|
9
|
+
let size = 0;
|
|
10
|
+
for (const field of fields) {
|
|
11
|
+
size = Math.max(size, field.offset + field.size);
|
|
12
|
+
}
|
|
13
|
+
return size;
|
|
14
|
+
}
|
|
15
|
+
function resolveEntryClassName(className) {
|
|
16
|
+
if (className.startsWith("~lib/set/Set<")) {
|
|
17
|
+
return className.replace("~lib/set/Set<", "~lib/set/SetEntry<");
|
|
18
|
+
}
|
|
19
|
+
if (className.startsWith("~lib/map/Map<")) {
|
|
20
|
+
return className.replace("~lib/map/Map<", "~lib/map/MapEntry<");
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
// Map/Set only expose their backing `entries: ArrayBuffer` as an object field.
|
|
25
|
+
// The actual key/value references live inside unmanaged MapEntry/SetEntry
|
|
26
|
+
// records stored in that buffer, so we cache each entry's stride plus the
|
|
27
|
+
// offsets of reference-bearing fields for the reference scanner.
|
|
28
|
+
function attachEntryLayouts(classes) {
|
|
29
|
+
const classByName = new Map(classes.map((classLayout) => [classLayout.name, classLayout]));
|
|
30
|
+
for (const classLayout of classes) {
|
|
31
|
+
if (classLayout.builtinKind !== BuiltinContainerKind.MapOrSet) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const entryClassName = resolveEntryClassName(classLayout.name);
|
|
35
|
+
if (!entryClassName) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const entryClass = classByName.get(entryClassName);
|
|
39
|
+
if (!entryClass) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const referenceOffsets = entryClass.fields
|
|
43
|
+
.filter((field) => field.name !== "taggedNext" && field.isReference)
|
|
44
|
+
.map((field) => field.offset);
|
|
45
|
+
const size = entryClass.byteSize || computeFieldExtent(entryClass.fields);
|
|
46
|
+
if (size === 0) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const entryLayout = {
|
|
50
|
+
size,
|
|
51
|
+
referenceOffsets,
|
|
52
|
+
};
|
|
53
|
+
classLayout.entryLayout = entryLayout;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function attachBuiltinKind(classLayout) {
|
|
57
|
+
const { name: className } = classLayout;
|
|
58
|
+
if (className.startsWith("~lib/array/Array<")) {
|
|
59
|
+
classLayout.builtinKind = BuiltinContainerKind.Array;
|
|
60
|
+
}
|
|
61
|
+
else if (className.startsWith("~lib/staticarray/StaticArray<")) {
|
|
62
|
+
classLayout.builtinKind = BuiltinContainerKind.StaticArray;
|
|
63
|
+
}
|
|
64
|
+
else if (className.startsWith("~lib/map/Map<") || className.startsWith("~lib/set/Set<")) {
|
|
65
|
+
classLayout.builtinKind = BuiltinContainerKind.MapOrSet;
|
|
66
|
+
}
|
|
67
|
+
else if (className.startsWith("~lib/function/Function<")) {
|
|
68
|
+
classLayout.builtinKind = BuiltinContainerKind.Function;
|
|
69
|
+
}
|
|
70
|
+
else if (className === "~lib/tuple/SmallTuple") {
|
|
71
|
+
classLayout.builtinKind = BuiltinContainerKind.SmallTuple;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Resolves class layouts and global-root metadata from WebAssembly debug
|
|
76
|
+
* information and provides helper queries for reference scanning.
|
|
77
|
+
*
|
|
78
|
+
* Only classes with a runtime ID (`DW_AT_signature`) are included.
|
|
79
|
+
*/
|
|
80
|
+
export class DebugInfoResolver {
|
|
81
|
+
// Resolved runtime class layouts keyed by runtime type id.
|
|
82
|
+
layoutMap;
|
|
83
|
+
// Resolved global variable debug info.
|
|
84
|
+
globalVariableDebugInfos;
|
|
85
|
+
// Raw wasm global entries in module order, including mutability, type, and initial value.
|
|
86
|
+
wasmGlobalEntries;
|
|
87
|
+
constructor(layouts, globalVariableDebugInfos, wasmGlobalEntries) {
|
|
88
|
+
this.layoutMap = new Map(layouts.map((l) => [l.rtid, l]));
|
|
89
|
+
this.globalVariableDebugInfos = globalVariableDebugInfos;
|
|
90
|
+
this.wasmGlobalEntries = wasmGlobalEntries;
|
|
91
|
+
}
|
|
92
|
+
static fromWasm(wasmBinary) {
|
|
93
|
+
const debugInfo = parseWasmDebugInfo(wasmBinary);
|
|
94
|
+
const classes = [];
|
|
95
|
+
const globalVariableDebugInfos = [];
|
|
96
|
+
for (const unit of debugInfo.compilationUnits) {
|
|
97
|
+
const resolver = new CompilationUnitResolver(unit.rootDIE);
|
|
98
|
+
for (const layout of resolver.resolve(unit.rootDIE)) {
|
|
99
|
+
classes.push(layout);
|
|
100
|
+
}
|
|
101
|
+
for (const globalVariableDebugInfo of resolver.resolveGlobalVariableDebugInfos(unit.rootDIE)) {
|
|
102
|
+
globalVariableDebugInfos.push(globalVariableDebugInfo);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
flattenInheritedFields(classes);
|
|
106
|
+
// Derive Map/Set entry-buffer metadata before dropping rtid==0 helper
|
|
107
|
+
// classes, because MapEntry/SetEntry may be filtered out afterwards but
|
|
108
|
+
// their field layout is still needed to scan the `entries` ArrayBuffer.
|
|
109
|
+
attachEntryLayouts(classes);
|
|
110
|
+
const filteredClasses = classes.filter(shouldKeepClassLayout);
|
|
111
|
+
const classNames = new Set(filteredClasses.map((layout) => layout.name));
|
|
112
|
+
return new DebugInfoResolver(filteredClasses, globalVariableDebugInfos.filter((globalVariableDebugInfo) => classNames.has(globalVariableDebugInfo.typeName)), debugInfo.globals);
|
|
113
|
+
}
|
|
114
|
+
getLayouts() {
|
|
115
|
+
return Array.from(this.layoutMap.values());
|
|
116
|
+
}
|
|
117
|
+
/** Returns class name, or "Class#<id>" if not found in debug info */
|
|
118
|
+
getClassName(classId) {
|
|
119
|
+
const layout = this.layoutMap.get(classId);
|
|
120
|
+
return layout ? layout.name : `Class#${classId}`;
|
|
121
|
+
}
|
|
122
|
+
/** Returns ClassDef or undefined */
|
|
123
|
+
getClassDef(classId) {
|
|
124
|
+
return this.layoutMap.get(classId);
|
|
125
|
+
}
|
|
126
|
+
getGlobalRoots(mutableI32GlobalValues) {
|
|
127
|
+
const i32ValuesByGlobalIndex = this.buildI32GlobalValueMap(mutableI32GlobalValues);
|
|
128
|
+
const globalRoots = [];
|
|
129
|
+
for (const globalVariableDebugInfo of this.globalVariableDebugInfos) {
|
|
130
|
+
const value = i32ValuesByGlobalIndex.get(globalVariableDebugInfo.index);
|
|
131
|
+
if (value === undefined) {
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
globalRoots.push({
|
|
135
|
+
name: globalVariableDebugInfo.name,
|
|
136
|
+
className: globalVariableDebugInfo.typeName,
|
|
137
|
+
globalIndex: globalVariableDebugInfo.index,
|
|
138
|
+
value,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return globalRoots;
|
|
142
|
+
}
|
|
143
|
+
/** Maps i32 wasm global indices to runtime mutable values or immutable initial values. */
|
|
144
|
+
buildI32GlobalValueMap(mutableI32GlobalValues) {
|
|
145
|
+
const values = new Map();
|
|
146
|
+
let mutableI32Slot = 0;
|
|
147
|
+
for (const wasmGlobalEntry of this.wasmGlobalEntries) {
|
|
148
|
+
if (wasmGlobalEntry.type.kind !== -1 /* TypeKind.i32 */) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (wasmGlobalEntry.mutable) {
|
|
152
|
+
const value = mutableI32GlobalValues[mutableI32Slot];
|
|
153
|
+
mutableI32Slot++;
|
|
154
|
+
if (value === undefined) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
values.set(wasmGlobalEntry.index, value);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
values.set(wasmGlobalEntry.index, wasmGlobalEntry.initialValue);
|
|
161
|
+
}
|
|
162
|
+
return values;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
class CompilationUnitResolver {
|
|
166
|
+
offsetMap;
|
|
167
|
+
baseTypeNames;
|
|
168
|
+
constructor(root) {
|
|
169
|
+
this.offsetMap = buildOffsetMap(root);
|
|
170
|
+
this.baseTypeNames = new Set();
|
|
171
|
+
for (const die of findDIEsByTag(root, DW_TAG.base_type)) {
|
|
172
|
+
const name = getAttr(die, DW_AT.name)?.value;
|
|
173
|
+
if (name) {
|
|
174
|
+
this.baseTypeNames.add(name);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
resolve(root) {
|
|
179
|
+
const layouts = [];
|
|
180
|
+
for (const classDie of findDIEsByTag(root, DW_TAG.class_type)) {
|
|
181
|
+
const layout = this.resolveClassLayout(classDie);
|
|
182
|
+
if (layout) {
|
|
183
|
+
layouts.push(layout);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return layouts;
|
|
187
|
+
}
|
|
188
|
+
resolveGlobalVariableDebugInfos(root) {
|
|
189
|
+
const globalVariableDebugInfos = [];
|
|
190
|
+
for (const child of root.children) {
|
|
191
|
+
if (child.tag !== DW_TAG.variable) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const globalVariableDebugInfo = this.resolveGlobalVariableDebugInfo(child);
|
|
195
|
+
if (globalVariableDebugInfo) {
|
|
196
|
+
globalVariableDebugInfos.push(globalVariableDebugInfo);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return globalVariableDebugInfos;
|
|
200
|
+
}
|
|
201
|
+
resolveTypeInfo(typeRef) {
|
|
202
|
+
const typeDie = this.offsetMap.get(typeRef);
|
|
203
|
+
if (!typeDie) {
|
|
204
|
+
return { size: 4, isReference: false };
|
|
205
|
+
}
|
|
206
|
+
const name = getAttr(typeDie, DW_AT.name)?.value;
|
|
207
|
+
const isReference = name === undefined ? false : !this.baseTypeNames.has(name);
|
|
208
|
+
const byteSize = getAttr(typeDie, DW_AT.byte_size);
|
|
209
|
+
const size = byteSize === undefined ? 4 : byteSize.value;
|
|
210
|
+
return { name, size, isReference };
|
|
211
|
+
}
|
|
212
|
+
resolveField(memberDie) {
|
|
213
|
+
const nameAttr = getAttr(memberDie, DW_AT.name);
|
|
214
|
+
const offsetAttr = getAttr(memberDie, DW_AT.data_member_location);
|
|
215
|
+
const typeAttr = getAttr(memberDie, DW_AT.type);
|
|
216
|
+
if (!nameAttr || offsetAttr === undefined || !typeAttr) {
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
const { size, isReference } = this.resolveTypeInfo(typeAttr.value);
|
|
220
|
+
return {
|
|
221
|
+
name: nameAttr.value,
|
|
222
|
+
offset: offsetAttr.value,
|
|
223
|
+
size,
|
|
224
|
+
isReference,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
resolveTemplateType(classDie) {
|
|
228
|
+
const templateParam = classDie.children.find((c) => c.tag === DW_TAG.template_type_parameter);
|
|
229
|
+
if (!templateParam) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
const typeAttr = getAttr(templateParam, DW_AT.type);
|
|
233
|
+
if (!typeAttr) {
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
return this.resolveTypeInfo(typeAttr.value);
|
|
237
|
+
}
|
|
238
|
+
resolveBaseName(classDie) {
|
|
239
|
+
const inheritanceDie = classDie.children.find((c) => c.tag === DW_TAG.inheritance);
|
|
240
|
+
if (!inheritanceDie) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
const typeAttr = getAttr(inheritanceDie, DW_AT.type);
|
|
244
|
+
if (!typeAttr) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
const parentDie = this.offsetMap.get(typeAttr.value);
|
|
248
|
+
if (!parentDie) {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
return getAttr(parentDie, DW_AT.name)?.value ?? null;
|
|
252
|
+
}
|
|
253
|
+
resolveGlobalVariableDebugInfo(variableDie) {
|
|
254
|
+
const nameAttr = getAttr(variableDie, DW_AT.name);
|
|
255
|
+
const typeAttr = getAttr(variableDie, DW_AT.type);
|
|
256
|
+
const locationAttr = getAttr(variableDie, DW_AT.location);
|
|
257
|
+
if (!nameAttr || !typeAttr || !locationAttr) {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
const { name: typeName } = this.resolveTypeInfo(typeAttr.value);
|
|
261
|
+
if (typeName === undefined) {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
name: nameAttr.value,
|
|
266
|
+
typeName,
|
|
267
|
+
index: locationAttr.value,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
resolveClassLayout(classDie) {
|
|
271
|
+
const nameAttr = getAttr(classDie, DW_AT.name);
|
|
272
|
+
if (nameAttr === undefined) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
const sigAttr = getAttr(classDie, DW_AT.signature);
|
|
276
|
+
if (sigAttr === undefined) {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
const members = classDie.children.filter((c) => c.tag === DW_TAG.member);
|
|
280
|
+
const fields = [];
|
|
281
|
+
for (const member of members) {
|
|
282
|
+
const field = this.resolveField(member);
|
|
283
|
+
if (field) {
|
|
284
|
+
fields.push(field);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
const templateType = this.resolveTemplateType(classDie);
|
|
288
|
+
const className = nameAttr.value;
|
|
289
|
+
const byteSizeAttr = getAttr(classDie, DW_AT.byte_size);
|
|
290
|
+
const layout = {
|
|
291
|
+
rtid: sigAttr.value,
|
|
292
|
+
name: className,
|
|
293
|
+
base: this.resolveBaseName(classDie),
|
|
294
|
+
byteSize: byteSizeAttr === undefined ? computeFieldExtent(fields) : byteSizeAttr.value,
|
|
295
|
+
fields,
|
|
296
|
+
templateType: templateType?.name,
|
|
297
|
+
templateTypeIsReference: templateType?.isReference,
|
|
298
|
+
};
|
|
299
|
+
attachBuiltinKind(layout);
|
|
300
|
+
return layout;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Resolve all class layouts from DWARF debug information embedded in a
|
|
305
|
+
* WebAssembly binary.
|
|
306
|
+
*
|
|
307
|
+
* Only classes with a runtime ID (`DW_AT_signature`) are included.
|
|
308
|
+
*/
|
|
309
|
+
export function resolveClassLayouts(wasmBinary) {
|
|
310
|
+
return DebugInfoResolver.fromWasm(wasmBinary).getLayouts();
|
|
311
|
+
}
|
|
312
|
+
function flattenInheritedFields(classes) {
|
|
313
|
+
const byName = new Map(classes.map((c) => [c.name, c]));
|
|
314
|
+
const flattened = new Set();
|
|
315
|
+
function flatten(cls) {
|
|
316
|
+
if (flattened.has(cls.name)) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
flattened.add(cls.name);
|
|
320
|
+
if (!cls.base) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const parent = byName.get(cls.base);
|
|
324
|
+
if (!parent) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
flatten(parent);
|
|
328
|
+
cls.fields = [...parent.fields, ...cls.fields];
|
|
329
|
+
}
|
|
330
|
+
for (const cls of classes) {
|
|
331
|
+
flatten(cls);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=debugInfoResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugInfoResolver.js","sourceRoot":"","sources":["../../../tools/heap_analyzer/src/debugInfoResolver.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAItC,OAAO,EACL,KAAK,EACL,MAAM,EACN,cAAc,EACd,aAAa,EACb,OAAO,EACP,kBAAkB,GAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAwE,MAAM,YAAY,CAAC;AAUxH,SAAS,qBAAqB,CAAC,WAAwB;IACrD,OAAO,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,oBAAoB,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,0EAA0E;AAC1E,0EAA0E;AAC1E,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,OAAsB;IAChD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAE3F,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QAClC,IAAI,WAAW,CAAC,WAAW,KAAK,oBAAoB,CAAC,QAAQ,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC;aACnE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,IAAI,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAgB;YAC/B,IAAI;YACJ,gBAAgB;SACjB,CAAC;QACF,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAsD;IACtF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;IAExC,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9C,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC;IACvD,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACjE,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAC7D,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1F,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC;IAC1D,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC3D,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC;IAC1D,CAAC;SAAM,IAAI,SAAS,KAAK,uBAAuB,EAAE,CAAC;QACjD,WAAW,CAAC,WAAW,GAAG,oBAAoB,CAAC,UAAU,CAAC;IAC5D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IAC5B,2DAA2D;IAC1C,SAAS,CAA2B;IACrD,uCAAuC;IACtB,wBAAwB,CAA4B;IACrE,0FAA0F;IACzE,iBAAiB,CAAoB;IAEtD,YACE,OAAsB,EACtB,wBAAmD,EACnD,iBAAoC;QAEpC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAAoC;QAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,wBAAwB,GAA8B,EAAE,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,KAAK,MAAM,uBAAuB,IAAI,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7F,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAChC,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzE,OAAO,IAAI,iBAAiB,CAC1B,eAAe,EACf,wBAAwB,CAAC,MAAM,CAAC,CAAC,uBAAuB,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EAC9G,SAAS,CAAC,OAAO,CAClB,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,qEAAqE;IACrE,YAAY,CAAC,OAAe;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;IACnD,CAAC;IAED,oCAAoC;IACpC,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,sBAAgC;QAC7C,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;QACnF,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,KAAK,MAAM,uBAAuB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,uBAAuB,CAAC,IAAI;gBAClC,SAAS,EAAE,uBAAuB,CAAC,QAAQ;gBAC3C,WAAW,EAAE,uBAAuB,CAAC,KAAK;gBAC1C,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,0FAA0F;IAClF,sBAAsB,CAAC,sBAAgC;QAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,0BAAiB,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;gBACrD,cAAc,EAAE,CAAC;gBACjB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,uBAAuB;IACV,SAAS,CAAwB;IACjC,aAAa,CAAc;IAE5C,YAAY,IAAc;QACxB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAA2B,CAAC;YACnE,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+BAA+B,CAAC,IAAc;QAC5C,MAAM,wBAAwB,GAA8B,EAAE,CAAC;QAE/D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,uBAAuB,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC3E,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAA2B,CAAC;QACvE,MAAM,WAAW,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,KAAgB,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,SAAmB;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;QAC7E,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,KAAe;YAC9B,MAAM,EAAE,UAAU,CAAC,KAAe;YAClC,IAAI;YACJ,WAAW;SACZ,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,QAAkB;QAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC9F,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;IACxD,CAAC;IAEO,eAAe,CAAC,QAAkB;QACxC,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;QACnF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAQ,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAgB,IAAI,IAAI,CAAC;IACnE,CAAC;IAEO,8BAA8B,CAAC,WAAqB;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAe,CAAC,CAAC;QAC1E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,KAAe;YAC9B,QAAQ;YACR,KAAK,EAAE,YAAY,CAAC,KAAe;SACpC,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,QAAkB;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAe,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,MAAM,GAAgB;YAC1B,IAAI,EAAE,OAAO,CAAC,KAAe;YAC7B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YACpC,QAAQ,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,YAAY,CAAC,KAAgB;YAClG,MAAM;YACN,YAAY,EAAE,YAAY,EAAE,IAAI;YAChC,uBAAuB,EAAE,YAAY,EAAE,WAAW;SACnD,CAAC;QAEF,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAoC;IACtE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,SAAS,OAAO,CAAC,GAAgB;QAC/B,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,CAAC;QAChB,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -17,9 +17,18 @@ export function parseDumpFile(buffer) {
|
|
|
17
17
|
const dataEnd = view.getUint32(8, true);
|
|
18
18
|
const heapBase = view.getUint32(12, true);
|
|
19
19
|
const stackPointer = view.getUint32(16, true);
|
|
20
|
+
const numMutableI32GlobalValues = view.getUint32(20, true);
|
|
21
|
+
const memoryOffset = DUMP_HEADER_SIZE + numMutableI32GlobalValues * 4;
|
|
22
|
+
if (buffer.byteLength < memoryOffset) {
|
|
23
|
+
throw new Error(`Dump file too small for ${numMutableI32GlobalValues} mutable i32 global values: expected at least ${memoryOffset} bytes, got ${buffer.byteLength}`);
|
|
24
|
+
}
|
|
25
|
+
const mutableI32GlobalValues = new Array(numMutableI32GlobalValues);
|
|
26
|
+
for (let index = 0; index < numMutableI32GlobalValues; index++) {
|
|
27
|
+
mutableI32GlobalValues[index] = view.getUint32(DUMP_HEADER_SIZE + index * 4, true);
|
|
28
|
+
}
|
|
20
29
|
return {
|
|
21
|
-
rtGlobals: { dataEnd, heapBase, stackPointer },
|
|
22
|
-
memory: new DataView(buffer,
|
|
30
|
+
rtGlobals: { dataEnd, heapBase, stackPointer, mutableI32GlobalValues },
|
|
31
|
+
memory: new DataView(buffer, memoryOffset),
|
|
23
32
|
};
|
|
24
33
|
}
|
|
25
34
|
//# sourceMappingURL=dumpReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dumpReader.js","sourceRoot":"","sources":["../../../tools/heap_analyzer/src/dumpReader.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,gBAAgB,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,SAAS,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dumpReader.js","sourceRoot":"","sources":["../../../tools/heap_analyzer/src/dumpReader.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,gBAAgB,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,SAAS,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,CAAC,CAAC;IAEtE,IAAI,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,2BAA2B,yBAAyB,iDAAiD,YAAY,eAAe,MAAM,CAAC,UAAU,EAAE,CACpJ,CAAC;IACJ,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAS,yBAAyB,CAAC,CAAC;IAC5E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,yBAAyB,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/D,sBAAsB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACL,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,sBAAsB,EAAE;QACtE,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DWARF debug information parser for WebAssembly files.
|
|
3
|
+
*
|
|
4
|
+
* Parses DWARF4 debug sections (debug_info, debug_abbrev, debug_str) from
|
|
5
|
+
* wasm custom sections. Uses wasmparser to decode the wasm binary and
|
|
6
|
+
* extract custom sections, then performs low-level DWARF parsing on the
|
|
7
|
+
* raw bytes.
|
|
8
|
+
*/
|
|
9
|
+
import { Type } from "wasmparser";
|
|
1
10
|
/** DWARF tag values (DW_TAG_*). */
|
|
2
11
|
export declare const DW_TAG: {
|
|
3
12
|
readonly compile_unit: 17;
|
|
@@ -60,23 +69,36 @@ export interface CompilationUnit {
|
|
|
60
69
|
addressSize: number;
|
|
61
70
|
rootDIE: DwarfDIE;
|
|
62
71
|
}
|
|
63
|
-
export interface
|
|
72
|
+
export interface WasmDebugInfo {
|
|
64
73
|
/** Parsed .debug_str string table (offset → string). */
|
|
65
74
|
stringTable: Map<number, string>;
|
|
66
75
|
/** Parsed abbreviation tables. */
|
|
67
76
|
abbreviations: AbbrevTable;
|
|
68
77
|
/** All compilation units in .debug_info. */
|
|
69
78
|
compilationUnits: CompilationUnit[];
|
|
79
|
+
/** All wasm globals in module order. */
|
|
80
|
+
globals: WasmGlobalEntry[];
|
|
70
81
|
}
|
|
71
|
-
interface CustomSection {
|
|
82
|
+
export interface CustomSection {
|
|
72
83
|
name: string;
|
|
73
84
|
payload: Uint8Array;
|
|
74
85
|
}
|
|
86
|
+
export interface WasmGlobalEntry {
|
|
87
|
+
index: number;
|
|
88
|
+
mutable: boolean;
|
|
89
|
+
type: Type;
|
|
90
|
+
initialValue: number;
|
|
91
|
+
}
|
|
92
|
+
export interface WasmSections {
|
|
93
|
+
customSections: CustomSection[];
|
|
94
|
+
globals: WasmGlobalEntry[];
|
|
95
|
+
}
|
|
75
96
|
/**
|
|
76
|
-
* Extract custom sections from a wasm binary using
|
|
77
|
-
* The reader validates wasm structure while
|
|
97
|
+
* Extract custom sections and global entries from a wasm binary using
|
|
98
|
+
* wasmparser's BinaryReader. The reader validates wasm structure while
|
|
99
|
+
* iterating through sections.
|
|
78
100
|
*/
|
|
79
|
-
export declare function
|
|
101
|
+
export declare function extractWasmSections(wasmBinary: Uint8Array): WasmSections;
|
|
80
102
|
/**
|
|
81
103
|
* Parse a .debug_abbrev section into an abbreviation table.
|
|
82
104
|
*/
|
|
@@ -86,14 +108,14 @@ export declare function parseAbbrevTable(data: Uint8Array): AbbrevTable;
|
|
|
86
108
|
*/
|
|
87
109
|
export declare function parseDebugInfo(infoData: Uint8Array, abbrevTable: AbbrevTable, stringTable: Map<number, string>): CompilationUnit[];
|
|
88
110
|
/**
|
|
89
|
-
* Parse
|
|
111
|
+
* Parse debug metadata from a WebAssembly binary.
|
|
90
112
|
*
|
|
91
113
|
* @param wasmBinary The raw wasm file content as a Uint8Array or ArrayBuffer.
|
|
92
|
-
* @returns Parsed DWARF
|
|
114
|
+
* @returns Parsed DWARF units together with wasm global metadata.
|
|
93
115
|
* @throws If required DWARF sections are missing or malformed.
|
|
94
116
|
*
|
|
95
117
|
*/
|
|
96
|
-
export declare function
|
|
118
|
+
export declare function parseWasmDebugInfo(wasmBinary: Uint8Array | ArrayBuffer): WasmDebugInfo;
|
|
97
119
|
/** Human-readable tag name for known DWARF tags. */
|
|
98
120
|
export declare function tagName(tag: number): string;
|
|
99
121
|
/** Human-readable attribute name for known DWARF attributes. */
|
|
@@ -114,4 +136,3 @@ export declare function findDIEsByTag(root: DwarfDIE, tag: number): DwarfDIE[];
|
|
|
114
136
|
* Build a map from DIE offset to DIE for resolving DW_FORM_ref4 references.
|
|
115
137
|
*/
|
|
116
138
|
export declare function buildOffsetMap(root: DwarfDIE): Map<number, DwarfDIE>;
|
|
117
|
-
export {};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* extract custom sections, then performs low-level DWARF parsing on the
|
|
9
9
|
* raw bytes.
|
|
10
10
|
*/
|
|
11
|
-
import { BinaryReader } from "wasmparser";
|
|
11
|
+
import { BinaryReader, } from "wasmparser";
|
|
12
12
|
// ── DWARF constants ──────────────────────────────────────────────────────────
|
|
13
13
|
/** DWARF tag values (DW_TAG_*). */
|
|
14
14
|
export const DW_TAG = {
|
|
@@ -92,32 +92,52 @@ class BufferReader {
|
|
|
92
92
|
return value;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
+
function readSectionName(reader, info, decoder) {
|
|
96
|
+
if (info.id === 0 /* SectionCode.Custom */ && info.name) {
|
|
97
|
+
return decoder.decode(info.name);
|
|
98
|
+
}
|
|
99
|
+
if (info.id !== 6 /* SectionCode.Global */) {
|
|
100
|
+
reader.skipSection();
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
function updateLastGlobalInitialValue(globals, op) {
|
|
105
|
+
switch (op.code) {
|
|
106
|
+
case 65 /* OperatorCode.i32_const */:
|
|
107
|
+
case 66 /* OperatorCode.i64_const */:
|
|
108
|
+
case 67 /* OperatorCode.f32_const */:
|
|
109
|
+
case 68 /* OperatorCode.f64_const */: {
|
|
110
|
+
const lastGlobal = globals.at(-1);
|
|
111
|
+
if (lastGlobal) {
|
|
112
|
+
lastGlobal.initialValue = Number(op.literal);
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
95
118
|
/**
|
|
96
|
-
* Extract custom sections from a wasm binary using
|
|
97
|
-
* The reader validates wasm structure while
|
|
119
|
+
* Extract custom sections and global entries from a wasm binary using
|
|
120
|
+
* wasmparser's BinaryReader. The reader validates wasm structure while
|
|
121
|
+
* iterating through sections.
|
|
98
122
|
*/
|
|
99
|
-
export function
|
|
123
|
+
export function extractWasmSections(wasmBinary) {
|
|
100
124
|
const reader = new BinaryReader();
|
|
101
125
|
reader.setData(wasmBinary.buffer, wasmBinary.byteOffset, wasmBinary.byteLength);
|
|
102
|
-
const
|
|
126
|
+
const customSections = [];
|
|
127
|
+
const globals = [];
|
|
103
128
|
let currentSectionName;
|
|
129
|
+
let globalIndex = 0;
|
|
130
|
+
const decoder = new TextDecoder();
|
|
104
131
|
while (reader.read()) {
|
|
105
132
|
switch (reader.state) {
|
|
106
133
|
case 3 /* BinaryReaderState.BEGIN_SECTION */: {
|
|
107
|
-
|
|
108
|
-
if (info.id === 0 /* SectionCode.Custom */ && info.name) {
|
|
109
|
-
currentSectionName = new TextDecoder().decode(info.name);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
currentSectionName = undefined;
|
|
113
|
-
reader.skipSection();
|
|
114
|
-
}
|
|
134
|
+
currentSectionName = readSectionName(reader, reader.result, decoder);
|
|
115
135
|
break;
|
|
116
136
|
}
|
|
117
137
|
case 7 /* BinaryReaderState.SECTION_RAW_DATA */: {
|
|
118
138
|
if (currentSectionName !== undefined) {
|
|
119
139
|
const rawData = reader.result;
|
|
120
|
-
|
|
140
|
+
customSections.push({
|
|
121
141
|
name: currentSectionName,
|
|
122
142
|
payload: new Uint8Array(rawData),
|
|
123
143
|
});
|
|
@@ -125,12 +145,26 @@ export function extractCustomSections(wasmBinary) {
|
|
|
125
145
|
}
|
|
126
146
|
break;
|
|
127
147
|
}
|
|
148
|
+
case 39 /* BinaryReaderState.BEGIN_GLOBAL_SECTION_ENTRY */: {
|
|
149
|
+
const globalVar = reader.result;
|
|
150
|
+
globals.push({
|
|
151
|
+
index: globalIndex++,
|
|
152
|
+
mutable: globalVar.type.mutability !== 0,
|
|
153
|
+
type: globalVar.type.contentType,
|
|
154
|
+
initialValue: 0,
|
|
155
|
+
});
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case 26 /* BinaryReaderState.INIT_EXPRESSION_OPERATOR */: {
|
|
159
|
+
updateLastGlobalInitialValue(globals, reader.result);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
128
162
|
case -1 /* BinaryReaderState.ERROR */: {
|
|
129
163
|
throw new Error("Failed to parse wasm binary");
|
|
130
164
|
}
|
|
131
165
|
}
|
|
132
166
|
}
|
|
133
|
-
return
|
|
167
|
+
return { customSections, globals };
|
|
134
168
|
}
|
|
135
169
|
// ── Abbreviation table parsing ───────────────────────────────────────────────
|
|
136
170
|
/**
|
|
@@ -279,16 +313,16 @@ function parseDIETree(reader, unitEnd, abbrevTable, addressSize, stringTable, cu
|
|
|
279
313
|
}
|
|
280
314
|
// ── High-level API ───────────────────────────────────────────────────────────
|
|
281
315
|
/**
|
|
282
|
-
* Parse
|
|
316
|
+
* Parse debug metadata from a WebAssembly binary.
|
|
283
317
|
*
|
|
284
318
|
* @param wasmBinary The raw wasm file content as a Uint8Array or ArrayBuffer.
|
|
285
|
-
* @returns Parsed DWARF
|
|
319
|
+
* @returns Parsed DWARF units together with wasm global metadata.
|
|
286
320
|
* @throws If required DWARF sections are missing or malformed.
|
|
287
321
|
*
|
|
288
322
|
*/
|
|
289
|
-
export function
|
|
323
|
+
export function parseWasmDebugInfo(wasmBinary) {
|
|
290
324
|
const binary = wasmBinary instanceof Uint8Array ? wasmBinary : new Uint8Array(wasmBinary);
|
|
291
|
-
const customSections =
|
|
325
|
+
const { customSections, globals } = extractWasmSections(binary);
|
|
292
326
|
const debugAbbrev = customSections.find((s) => s.name === "debug_abbrev");
|
|
293
327
|
const debugInfo = customSections.find((s) => s.name === "debug_info");
|
|
294
328
|
const debugStr = customSections.find((s) => s.name === "debug_str");
|
|
@@ -301,7 +335,7 @@ export function parseDwarf(wasmBinary) {
|
|
|
301
335
|
const stringTable = parseStringTable(debugStr?.payload ?? new Uint8Array(0));
|
|
302
336
|
const abbreviations = parseAbbrevTable(debugAbbrev.payload);
|
|
303
337
|
const compilationUnits = parseDebugInfo(debugInfo.payload, abbreviations, stringTable);
|
|
304
|
-
return { stringTable, abbreviations, compilationUnits };
|
|
338
|
+
return { stringTable, abbreviations, compilationUnits, globals };
|
|
305
339
|
}
|
|
306
340
|
// ── Convenience helpers ──────────────────────────────────────────────────────
|
|
307
341
|
/** Human-readable tag name for known DWARF tags. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dwarfParser.js","sourceRoot":"","sources":["../../../tools/heap_analyzer/src/dwarfParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dwarfParser.js","sourceRoot":"","sources":["../../../tools/heap_analyzer/src/dwarfParser.ts"],"names":[],"mappings":"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"}
|