warpo 3.1.0 → 3.1.1
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(args?: string[]): Promise<void>;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Copyright (C) 2026 wasm-ecosystem
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
4
|
+
import { argv as processArgv, exit as processExit } from "node:process";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { analyzeDump, compareDumps } from "./src/index.js";
|
|
8
|
+
const CONSTRUCTOR_SORTS = new Set(["retained", "shallow", "count"]);
|
|
9
|
+
const COMPARISON_SORTS = new Set(["delta", "alloc", "freed", "count"]);
|
|
10
|
+
function readVersion() {
|
|
11
|
+
const packageJson = readFileSync(new URL("../../package.json", import.meta.url), "utf8");
|
|
12
|
+
const parsed = JSON.parse(packageJson);
|
|
13
|
+
const version = parsed.version;
|
|
14
|
+
if (typeof version !== "string") {
|
|
15
|
+
throw new TypeError("Invalid package.json: missing string version");
|
|
16
|
+
}
|
|
17
|
+
return version;
|
|
18
|
+
}
|
|
19
|
+
function parsePositiveInteger(value, optionName) {
|
|
20
|
+
const parsed = Number.parseInt(value, 10);
|
|
21
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
22
|
+
throw new Error(`${optionName} must be a positive integer`);
|
|
23
|
+
}
|
|
24
|
+
return parsed;
|
|
25
|
+
}
|
|
26
|
+
function parseSortField(value) {
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function formatErrorMessage(error) {
|
|
30
|
+
if (error instanceof Error) {
|
|
31
|
+
return error.message;
|
|
32
|
+
}
|
|
33
|
+
if (typeof error === "string") {
|
|
34
|
+
return error;
|
|
35
|
+
}
|
|
36
|
+
return JSON.stringify(error);
|
|
37
|
+
}
|
|
38
|
+
function readArrayBuffer(filePath, label) {
|
|
39
|
+
try {
|
|
40
|
+
const buffer = readFileSync(filePath);
|
|
41
|
+
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
45
|
+
throw new Error(`Error reading ${label}: ${message}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function readUint8Array(filePath, label) {
|
|
49
|
+
try {
|
|
50
|
+
return new Uint8Array(readFileSync(filePath));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
54
|
+
throw new Error(`Error reading ${label}: ${message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function sortConstructors(constructors, sortField) {
|
|
58
|
+
if (!CONSTRUCTOR_SORTS.has(sortField)) {
|
|
59
|
+
throw new Error(`Invalid constructor sort field: ${sortField}. Must be retained, shallow, or count.`);
|
|
60
|
+
}
|
|
61
|
+
switch (sortField) {
|
|
62
|
+
case "retained": {
|
|
63
|
+
return constructors;
|
|
64
|
+
}
|
|
65
|
+
case "shallow": {
|
|
66
|
+
return constructors.toSorted((lhs, rhs) => rhs.totalShallowSize - lhs.totalShallowSize);
|
|
67
|
+
}
|
|
68
|
+
case "count": {
|
|
69
|
+
return constructors.toSorted((lhs, rhs) => rhs.count - lhs.count);
|
|
70
|
+
}
|
|
71
|
+
default: {
|
|
72
|
+
throw new Error(`Invalid constructor sort field: ${sortField}. Must be retained, shallow, or count.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function sortConstructorComparisons(constructors, sortField) {
|
|
77
|
+
if (!COMPARISON_SORTS.has(sortField)) {
|
|
78
|
+
throw new Error(`Invalid comparison sort field: ${sortField}. Must be delta, alloc, freed, or count.`);
|
|
79
|
+
}
|
|
80
|
+
switch (sortField) {
|
|
81
|
+
case "delta": {
|
|
82
|
+
return constructors;
|
|
83
|
+
}
|
|
84
|
+
case "alloc": {
|
|
85
|
+
return constructors.toSorted((lhs, rhs) => rhs.allocatedSize - lhs.allocatedSize ||
|
|
86
|
+
rhs.sizeDelta - lhs.sizeDelta ||
|
|
87
|
+
rhs.countDelta - lhs.countDelta ||
|
|
88
|
+
lhs.className.localeCompare(rhs.className));
|
|
89
|
+
}
|
|
90
|
+
case "freed": {
|
|
91
|
+
return constructors.toSorted((lhs, rhs) => rhs.freedSize - lhs.freedSize || lhs.sizeDelta - rhs.sizeDelta || lhs.className.localeCompare(rhs.className));
|
|
92
|
+
}
|
|
93
|
+
case "count": {
|
|
94
|
+
return constructors.toSorted((lhs, rhs) => rhs.countDelta - lhs.countDelta || rhs.sizeDelta - lhs.sizeDelta || lhs.className.localeCompare(rhs.className));
|
|
95
|
+
}
|
|
96
|
+
default: {
|
|
97
|
+
throw new Error(`Invalid comparison sort field: ${sortField}. Must be delta, alloc, freed, or count.`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function analyzeDumpWithCli(dumpFile, options) {
|
|
102
|
+
const dumpBuffer = readArrayBuffer(dumpFile, "dump file");
|
|
103
|
+
const wasmBytes = readUint8Array(options.wasm, "wasm file");
|
|
104
|
+
const snapshot = analyzeDump(dumpBuffer, wasmBytes);
|
|
105
|
+
const sortField = options.sort ?? "retained";
|
|
106
|
+
let constructors = sortConstructors(snapshot.constructors, sortField);
|
|
107
|
+
if (options.top !== undefined) {
|
|
108
|
+
constructors = constructors.slice(0, options.top);
|
|
109
|
+
}
|
|
110
|
+
console.log(JSON.stringify({
|
|
111
|
+
totalHeapSize: snapshot.totalHeapSize,
|
|
112
|
+
totalLiveSize: snapshot.totalLiveSize,
|
|
113
|
+
constructors,
|
|
114
|
+
}, null, 2));
|
|
115
|
+
}
|
|
116
|
+
function diffDumpsWithCli(beforeDumpFile, afterDumpFile, options) {
|
|
117
|
+
const beforeDumpBuffer = readArrayBuffer(beforeDumpFile, "baseline dump file");
|
|
118
|
+
const afterDumpBuffer = readArrayBuffer(afterDumpFile, "current dump file");
|
|
119
|
+
const wasmBytes = readUint8Array(options.wasm, "wasm file");
|
|
120
|
+
const comparison = compareDumps(beforeDumpBuffer, afterDumpBuffer, wasmBytes);
|
|
121
|
+
const sortField = options.sort ?? "delta";
|
|
122
|
+
let constructors = sortConstructorComparisons(comparison.constructors, sortField);
|
|
123
|
+
if (options.top !== undefined) {
|
|
124
|
+
constructors = constructors.slice(0, options.top);
|
|
125
|
+
}
|
|
126
|
+
console.log(JSON.stringify({
|
|
127
|
+
beforeTotalHeapSize: comparison.beforeTotalHeapSize,
|
|
128
|
+
afterTotalHeapSize: comparison.afterTotalHeapSize,
|
|
129
|
+
totalHeapSizeDelta: comparison.totalHeapSizeDelta,
|
|
130
|
+
beforeTotalLiveSize: comparison.beforeTotalLiveSize,
|
|
131
|
+
afterTotalLiveSize: comparison.afterTotalLiveSize,
|
|
132
|
+
totalLiveSizeDelta: comparison.totalLiveSizeDelta,
|
|
133
|
+
constructors,
|
|
134
|
+
}, null, 2));
|
|
135
|
+
}
|
|
136
|
+
export async function main(args = processArgv.slice(2)) {
|
|
137
|
+
const program = new Command();
|
|
138
|
+
program
|
|
139
|
+
.name("as-heap-analyzer")
|
|
140
|
+
.description("Analyze or diff AssemblyScript heap dumps and output heap analysis as JSON.")
|
|
141
|
+
.version(readVersion(), "-v, --version")
|
|
142
|
+
.showHelpAfterError();
|
|
143
|
+
program
|
|
144
|
+
.command("analyze <dump-file>")
|
|
145
|
+
.description("Show the constructor view for a single heap dump")
|
|
146
|
+
.requiredOption("--wasm <file>", "Path to the wasm binary with DWARF custom sections")
|
|
147
|
+
.option("--sort <field>", "Sort constructors by retained|shallow|count", parseSortField)
|
|
148
|
+
.option("--top <n>", "Show top N classes in constructor view", (value) => parsePositiveInteger(value, "--top"))
|
|
149
|
+
.action((dumpFile, options) => {
|
|
150
|
+
analyzeDumpWithCli(dumpFile, options);
|
|
151
|
+
});
|
|
152
|
+
program
|
|
153
|
+
.command("diff <before-dump-file> <after-dump-file>")
|
|
154
|
+
.description("Show the comparison view between two heap dumps")
|
|
155
|
+
.requiredOption("--wasm <file>", "Path to the wasm binary with DWARF custom sections")
|
|
156
|
+
.option("--sort <field>", "Sort comparison rows by delta|alloc|freed|count", parseSortField)
|
|
157
|
+
.option("--top <n>", "Show top N classes in comparison view", (value) => parsePositiveInteger(value, "--top"))
|
|
158
|
+
.action((beforeDumpFile, afterDumpFile, options) => {
|
|
159
|
+
diffDumpsWithCli(beforeDumpFile, afterDumpFile, options);
|
|
160
|
+
});
|
|
161
|
+
await program.parseAsync(args, { from: "user" });
|
|
162
|
+
}
|
|
163
|
+
if (processArgv[1] !== undefined && fileURLToPath(import.meta.url) === processArgv[1]) {
|
|
164
|
+
try {
|
|
165
|
+
await main();
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.error(formatErrorMessage(error));
|
|
169
|
+
processExit(1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../tools/heap_analyzer/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "warpo",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "next generation AssemblyScript compiler with optimizations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"warpo": "dist/warpo.js"
|
|
7
|
+
"warpo": "dist/warpo.js",
|
|
8
|
+
"heap-analyzer": "dist/heap_analyzer/cli.js"
|
|
8
9
|
},
|
|
9
10
|
"scripts": {
|
|
10
11
|
"update": "cmake -S . -B build && cmake --build build --parallel --target warpo_binaryen_enums_gen && ./build/bin/warpo_binaryen_enums_gen",
|