Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5869a3b
AOT: crashes and wrong answers found since #942, and faster builds of…
Jarred-Sumner Oct 31, 2026
8a7c63a
AOT: miscompilations and crashes found since #967, builds that never …
Jarred-Sumner Nov 1, 2026
115632d
AOT: crashes and miscompilations found since #971, Map/Set index slot…
Jarred-Sumner Nov 1, 2026
5b150c0
AOT: follow-up to #972: crashes, wrong answers, bun test --aot, build…
Jarred-Sumner Nov 1, 2026
9f5001e
AOT: follow-up to #974: 50 fixes (#978)
Jarred-Sumner Nov 1, 2026
f25de97
AOT: follow-up to #978: 18 fixes (#979)
Jarred-Sumner Nov 1, 2026
0ef2dfd
AOT: 77 fixes: crashes and wrong answers in executables, mocks and im…
Jarred-Sumner Nov 1, 2026
b83d8a1
AOT: follow-up to #982: 48 fixes (#983)
Jarred-Sumner Nov 2, 2026
42067fc
AOT: replace the flow passes and the B3 back end with a scan, a link …
Jarred-Sumner Nov 7, 2026
ee95288
AOT: fixes behind #997: silent wrong answers, a crash in test runs wi…
Jarred-Sumner Nov 7, 2026
5a61071
AOT: more fixes: right programs that aborted, a database of the build…
Jarred-Sumner Nov 7, 2026
2f8b517
chore(upstream): merge WebKit AOT compiler rewrite
vincentkoc Nov 9, 2026
a679a00
fix(ci): run rewritten compiler regression fixtures
vincentkoc Nov 9, 2026
d1bf5e7
test(aot): qualify module remocking against candidate engine
vincentkoc Nov 9, 2026
f3386c6
fix(aot): remove retired image scope from require facades
vincentkoc Nov 9, 2026
28fe697
fix(ci): qualify rewritten ARM64 native test registrations
vincentkoc Nov 9, 2026
0237974
fix(ci): qualify the HTTP declaration repair candidate
vincentkoc Nov 9, 2026
b8746c3
fix(aot): complete the cache root test visitor after sync
vincentkoc Nov 9, 2026
1ed3a44
fix(aot): track typed-array payloads in the fork heap
vincentkoc Nov 9, 2026
a5f127f
test(aot): require ARM64 typed-array allocation proof
vincentkoc Nov 9, 2026
651eeac
test(ci): qualify the current Bun rewrite candidate
vincentkoc Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
7 changes: 5 additions & 2 deletions .github/openclaw/artifacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import sys
import time

BASE = '4d45755fed4aeef19e95beb90d3d0c884a2812bd'
BASE = '5a61071f79134bf41844e7ea31a8449147d85dd4'
HISTORY_FLOOR = '5718a6ec579b98362ea7276a426deedcc6281ef5'
ROOT = Path(__file__).resolve().parents[2]
CONFIG = json.loads((ROOT / '.github/openclaw/variants.json').read_text())
Expand Down Expand Up @@ -91,7 +91,10 @@ def preflight():
raise ValueError('dispatch must use the same reviewed branch head and full input SHA')
ref = os.environ['GITHUB_REF']
qualification_only = (
ref == 'refs/heads/claude/sync-webkit-upstream-20261014'
ref in (
'refs/heads/claude/sync-webkit-upstream-20261014',
'refs/heads/claude/sync-webkit-aot-rewrite-20261109',
)
and os.environ.get('INPUT_PUBLISH') == 'false'
)
if ref not in ('refs/heads/openclaw/main', 'refs/heads/openclaw/batch-1', 'refs/heads/openclaw/release-5718a6ec') and not qualification_only:
Expand Down
2 changes: 1 addition & 1 deletion .github/openclaw/qualification/consumer_identity.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
FIXTURE = 'bun/test/js/node/worker_threads/openclaw-resource-limits.test.ts'
FIXTURE_SHA256 = '2e925768c7625e093a3608cb0d47c33e1b2d591d16b485b2d7d30228e528b860'
AOT_TEST = 'bun/test/aot/every-platform.test.ts'
AOT_TEST_SHA256 = 'c82727a5ee0fe4091f9eb8337c9b917d76c2fac6ce2c8cf7f4e65a1cbd975269'
AOT_TEST_SHA256 = '54c4c43fefe69e7b8a4db37566ed2e4bf1ef09a10d9befd836d87e36fa8c4f92'
AOT_LOG = 'sync/aot-every-platform.log'
BUILD_ENV = ('BUN_WEBKIT_ARTIFACT_MANIFEST', 'BUN_BUILD_PREFETCH_DIR', 'BUN_BUILD_CACHE_DIR')

Expand Down
20 changes: 10 additions & 10 deletions .github/openclaw/qualification/harness-adapters.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@
}
},
"candidate": {
"pin": "ae14f84a8f978f069ce8deadb4c5582b3331f139",
"pin": "0dd6a8f4fc9bbc0e413b2c73ea870a33ab7a60bb",
"build": {
"patch": null,
"sha256": null,
"files": {}
},
"test": {
"patch": "harness-adapters/current-test.patch",
"sha256": "d78f178e1ab99974de7661c8d5b4dcee372c11ac472b8492e24d544edaea9dca",
"sha256": "b2909d5022658929a9da477d2db266bdb80b6f416da783bc6ddf625ede07a361",
"files": {
"scripts/buildkite.ts": {
"before": "cf1999381cf38d34b9892118266614ae2b81a28066d47a455aa15794fb2c1c3e",
Expand All @@ -69,17 +69,17 @@
"mode": "100644"
},
"scripts/openclaw-ci/tests.ts": {
"before": "157dd3092ef8c6188915b071f9f5cbdc696d0de0cc8df71b3880aff738c3479b",
"after": "209ba5becfecef66bdf8251f27d5065dafca05c0649a8c973a974ddabd67320d",
"base_blob": "4f60e36ddc6d739c3669718a4c9d4d89fca7a5ce",
"adapted_blob": "7135c7a27616ad926c0e3f0b9a65d055f62614e5",
"before": "86bf345ff306f216722f94da2d5fe88d7256f5c7aace9a30336643c8818d0cef",
"after": "d4a1a9c5a9ab869619cb127e9855d4e5a6abde878d22f0125d1b536155969aff",
"base_blob": "515a10cdf4e98e8fec07f5ca5a3ece29b2259078",
"adapted_blob": "bd869f380dd829470d747d0e782a18ec46ece551",
"mode": "100644"
},
"scripts/runner.node.ts": {
"before": "94a4a40981dfe6e1b9310052cfb19b7827259ad83faa65b39ff19cc170b7e41b",
"after": "160d99e237942b955885533fc8b4f2797b7c45c93b1833fbbfcf9e074de5dce8",
"base_blob": "fb0a91398954a39ce1af68c14437ed91705ab87c",
"adapted_blob": "52ef9c2a03e36f5f5a82bf7d47e3e2f3c6343dff",
"before": "c9eab00d35b7bbb9c7c69d8ed7441a6bdb91dfdce54ab152c359b933f50ff800",
"after": "bc79759e971009a1f9f69d8e707b3492801914c0915d66c3a3d3385c71c58644",
"base_blob": "a7c25245a75a8587b5cdc5296b5ccbb0780804db",
"adapted_blob": "0822e904f2e25eaeac516c7cae93be025fba867e",
"mode": "100755"
}
}
Expand Down
66 changes: 33 additions & 33 deletions .github/openclaw/qualification/harness-adapters/current-test.patch
Original file line number Diff line number Diff line change
Expand Up @@ -108,25 +108,25 @@ index 401d5e02728b1966552d6a6357076e50f8203ce9..bdc41d6881b43969d053381afed744a1
}

diff --git a/scripts/openclaw-ci/tests.ts b/scripts/openclaw-ci/tests.ts
index 4f60e36ddc6d739c3669718a4c9d4d89fca7a5ce..7135c7a27616ad926c0e3f0b9a65d055f62614e5 100644
index 515a10cdf4e98e8fec07f5ca5a3ece29b2259078..bd869f380dd829470d747d0e782a18ec46ece551 100644
--- a/scripts/openclaw-ci/tests.ts
+++ b/scripts/openclaw-ci/tests.ts
@@ -1,5 +1,5 @@
import { spawnSync, type SpawnSyncReturns } from "node:child_process";
-import { appendFileSync, existsSync, mkdirSync, readFileSync, statfsSync, writeFileSync } from "node:fs";
+import { appendFileSync, existsSync, mkdirSync, readFileSync, rmSync, statfsSync, writeFileSync } from "node:fs";
-import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, statfsSync, writeFileSync } from "node:fs";
+import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statfsSync, writeFileSync } from "node:fs";
import { homedir } from "node:os";
import { basename, dirname, resolve } from "node:path";

@@ -278,6 +278,7 @@
@@ -365,6 +365,7 @@
const command = process.argv[2];
const selectionPath = "build/openclaw-ci/selected.json";
const resultsPath = "build/openclaw-ci/results.json";
+ const terminalPath = "build/openclaw-ci/runner-terminal.json";
if (command === "select-windows") {
const selected = selectTests([], git("ls-files", "-z", "test"), false, "windows");
mkdirSync(dirname(selectionPath), { recursive: true });
@@ -311,6 +312,20 @@
@@ -409,6 +410,20 @@
} else if (command === "test") {
const selected: string[] = JSON.parse(readFileSync(selectionPath, "utf8"));
if (!selected.length) throw new Error("Refusing an empty test selection");
Expand All @@ -145,25 +145,25 @@ index 4f60e36ddc6d739c3669718a4c9d4d89fca7a5ce..7135c7a27616ad926c0e3f0b9a65d055
+ junitArgs.push("--junit", "--junit-temp-dir", reporting[1]!);
+ }
reportDiskUsage("before");
// Fresh processes preserve the original owner's GC sequence and expose late frees.
let ownerExitFailed = false;
@@ -343,6 +358,7 @@
const engineIr = selected.filter(isEngineIr);
if (engineIr.length) {
@@ -476,6 +491,7 @@
console.log(`Owner-exit: ${failures}/50 failed`);
}
// CI invokes this script with the built executable; the upstream runner uses it for every test.
+ rmSync(terminalPath, { force: true });
const result = spawnSync(
"node",
[
@@ -353,6 +369,7 @@
@@ -486,6 +502,7 @@
"--retries=0",
"--results-json",
resultsPath,
+ ...junitArgs,
...selected.flatMap(test => ["--include", test.replace(/^test\//, "")]),
...selected.filter(test => !isEngineIr(test)).flatMap(test => ["--include", test.replace(/^test\//, "")]),
],
{ stdio: "inherit" },
@@ -385,6 +402,10 @@
@@ -518,6 +535,10 @@
if (direct.stderr) process.stderr.write(direct.stderr);
}
reportDiskUsage("after");
Expand All @@ -175,18 +175,18 @@ index 4f60e36ddc6d739c3669718a4c9d4d89fca7a5ce..7135c7a27616ad926c0e3f0b9a65d055
if (result.error) throw result.error;
if (result.status !== 0) process.exit(result.status ?? 1);
diff --git a/scripts/runner.node.ts b/scripts/runner.node.ts
index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3c6343dff 100755
index a7c25245a75a8587b5cdc5296b5ccbb0780804db..0822e904f2e25eaeac516c7cae93be025fba867e 100755
--- a/scripts/runner.node.ts
+++ b/scripts/runner.node.ts
@@ -1174,6 +1174,7 @@
@@ -1141,6 +1141,7 @@
concurrent = parallelism > 1,
maxAttempts = 1 + (parseInt(options.retries) || 0),
saysDuration = false,
+ firstResult?: TestResult,
): Promise<TestResult | undefined> => {
const index = ++i;

@@ -1187,18 +1188,20 @@
@@ -1154,18 +1155,20 @@
let grouptitle = `${getAnsi("gray")}[${index}/${total}]${getAnsi("reset")} ${title}`;
if (attempt > 1) grouptitle += ` ${getAnsi("gray")}[attempt #${attempt}]${getAnsi("reset")}`;

Expand All @@ -210,7 +210,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
}

const { ok, stdoutPreview, error } = result;
@@ -1329,7 +1332,7 @@
@@ -1296,7 +1299,7 @@
if (!failedResults.length) {
await Promise.all(beforeFirstTest);

Expand All @@ -219,7 +219,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
await awaitNapiPrebuild(testPath);
const absoluteTestPath = join(testsPath, testPath);
const title = relative(cwd, absoluteTestPath).replaceAll(sep, "/");
@@ -1411,25 +1414,26 @@
@@ -1378,25 +1381,26 @@
return runTest(
title,
async index => {
Expand Down Expand Up @@ -265,7 +265,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
const mb = 1024 ** 3;
let stdoutPreview = stdout.slice(0, mb).split("\n").slice(0, 50).join("\n");
if (crashes) stdoutPreview += crashes;
@@ -1444,10 +1448,16 @@
@@ -1411,10 +1415,16 @@
stdoutPreview: stdoutPreview,
exitCode,
signalCode,
Expand All @@ -282,15 +282,15 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
);
} else {
let attempt = 0;
@@ -1463,6 +1473,7 @@
@@ -1430,6 +1440,7 @@
concurrent,
undefined,
saysDuration,
+ firstResult,
);
}
};
@@ -1488,17 +1499,20 @@
@@ -1455,17 +1466,20 @@
}
if (isAsan || buildsManyExecutables(bucketFiles[0]!)) env.BUN_FEATURE_FLAG_NO_ORPHANS = "1";

Expand Down Expand Up @@ -322,7 +322,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
spawnBun(execPath, {
args: [
"test",
@@ -1528,109 +1542,65 @@
@@ -1495,109 +1509,65 @@
);
if (crashes) process.stderr.write(crashes);

Expand Down Expand Up @@ -479,15 +479,15 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
}
};

@@ -1724,6 +1694,7 @@
@@ -1691,6 +1661,7 @@
);
const isModified = (t: string) => modifiedTests.has(t.replaceAll("\\", "/"));
const isBucketCandidate = (t: string) =>
+ !cliOptions.junit &&
parallelism === 1 &&
isTestStrict(t) &&
!isNodeTest(t) &&
@@ -2033,6 +2004,11 @@
@@ -2000,6 +1971,11 @@
error: r.error,
exitCode: r.exitCode,
signalCode: r.signalCode,
Expand All @@ -499,7 +499,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
duration: r.duration,
stdoutPreview: r.stdoutPreview?.slice?.(-4000),
}));
@@ -2065,12 +2041,17 @@
@@ -2032,12 +2008,17 @@
retries?: number;
}

Expand All @@ -521,7 +521,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
timestamp: number;
duration: number;
stdout: string;
@@ -2094,9 +2075,9 @@
@@ -2061,9 +2042,9 @@
stderr = process.stderr.write.bind(process.stderr),
retries = 0,
}: SpawnOptions = options;
Expand All @@ -534,7 +534,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
let timestamp: number | undefined;
let timedOut = false;
let idledOut = false;
@@ -2354,11 +2335,13 @@
@@ -2321,11 +2302,13 @@
if (timedOut && (!error || error === signalCode || /^code \d+$/.test(error)))
error = idledOut ? "stalled" : "timeout";
return {
Expand All @@ -552,7 +552,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
stdout: buffer,
timestamp: timestamp || Date.now(),
duration: duration || 0,
@@ -2562,7 +2545,7 @@
@@ -2529,7 +2512,7 @@
}
}

Expand All @@ -561,7 +561,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
testPath: string;
ok: boolean;
status: string;
@@ -2572,8 +2555,8 @@
@@ -2539,8 +2522,8 @@
stdout: string;
stdoutPreview: string;
// For --results-json and the JUnit report.
Expand All @@ -572,7 +572,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
duration?: number;
}

@@ -2670,19 +2653,22 @@
@@ -2637,19 +2620,22 @@
env.BUN_FEATURE_FLAG_NO_ORPHANS = "1";
}

Expand Down Expand Up @@ -608,7 +608,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
let { tests, errors, stdout: stdoutPreview } = parseTestStdout(stdout, testPath);
if (crashes) stdoutPreview += crashes;

@@ -2705,6 +2691,9 @@
@@ -2672,6 +2658,9 @@
stdoutPreview,
exitCode,
signalCode,
Expand All @@ -618,7 +618,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
duration,
};
}
@@ -2861,20 +2850,23 @@
@@ -2828,20 +2817,23 @@
// image's baked cache when one exists (the `prefetch` tool of
// scripts/build/ci-images/spec.ts sets BUN_INSTALL_CACHE_DIR machine-wide).
const cacheDir = process.env.BUN_INSTALL_CACHE_DIR;
Expand Down Expand Up @@ -655,7 +655,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
if (crashes) stdout += crashes;
const relativePath = relative(cwd, options.cwd);
const testPath = join(relativePath, "package.json");
@@ -2895,6 +2887,11 @@
@@ -2862,6 +2854,11 @@
],
stdout,
stdoutPreview: stdout,
Expand All @@ -667,7 +667,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
duration,
};
}
@@ -2912,7 +2909,7 @@
@@ -2879,7 +2876,7 @@
// Other steps print meanwhile.
let output = "";
const print = (chunk: string) => void (output += chunk);
Expand All @@ -676,7 +676,7 @@ index fb0a91398954a39ce1af68c14437ed91705ab87c..52ef9c2a03e36f5f5a82bf7d47e3e2f3
startGroup(title, () => process.stdout.write(output));
if (!ok) console.warn(`ci-remap server not installed (${title}: ${error}), crash reports will not be remapped`);
return ok;
@@ -3838,11 +3835,8 @@
@@ -3802,11 +3799,8 @@
if (outcome === "pass") {
return 0;
}
Expand Down
13 changes: 13 additions & 0 deletions .github/openclaw/qualification/verify-sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,19 @@
sqlite_count += len(selected_cases)
assert sqlite_count==6,'SQLite BigInt qualification incomplete'
counts['sqlite-bigint']=sqlite_count
mock_files = {
'test/aot/a-commonjs-file-mocked-again-is-seen-by-who-required-it.test.ts',
'test/aot/the-default-of-a-mocked-built-in-module-is-the-mocks.test.ts',
'test/aot/mock-module-of-compiled-modules.test.ts',
}
mock_cases = list(ElementTree.parse(out/'aot-module-mocks.xml').iter('testcase'))
assert mock_cases and all(case.find(tag) is None for case in mock_cases for tag in ('failure','error','skipped')),'AOT module mocks failed or skipped'
mock_sources = set()
for case in mock_cases:
location = Path(case.attrib['file'])
mock_sources.add(str(location.relative_to(root/'bun') if location.is_absolute() else location))
assert mock_sources==mock_files,'AOT module mock source selection drift'
counts['aot-module-mocks']=len(mock_cases)
assert (out/'untrimmed-getters.log').read_text().strip()=='native URL getters passed','native URL getter smoke incomplete'
for name in ['als-plugin','als-native','als-gc']:
matrix=json.loads((out/(name+'.json')).read_text())['results']
Expand Down
17 changes: 13 additions & 4 deletions .github/openclaw/qualify-arm64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,23 @@ import hashlib, json, os, signal, subprocess, sys, time
from pathlib import Path
build, out = Path(sys.argv[1]).resolve(), Path(sys.argv[2])
selections = {
'aot-typed-arrays': ['stubs/typed-arrays-with-length'],
'aot-namespace': [
'sharing-mode-and-namespace/sharing-mode-of-values',
'sharing-mode-and-namespace/module-of-namespace-objects',
'sharing-mode-and-namespace/require-namespace-does-not-mutate-imports',
'sharing-mode-and-namespace/require-facade-invalidates-captured-exports',
'sharing-mode-and-namespace/compiled-tests',
'sharing-mode-and-namespace/compiled-tests-under-validation',
],
'aot-modules': ['module-programs/' + name for name in [
'required-commonjs-modules', 'imported-commonjs-modules',
'commonjs-entry-point', 'records-of-require', 'import-meta-kept',
'commonjs-entry-point', 'records-of-require', 'parents-by-level',
'cache-by-level', 'nothing-to-run', 'import-meta-kept',
'import-meta-passed-on', 'module-builtins-in-every-position',
'termination-during-import-handoff',
'import-called-during-load', 'texts-in-turns',
'texts-in-turns-while-other-jobs-wait', 'throw-through-start-of-module',
'start-of-module-that-has-run', 'every-kind-of-step-of-start',
]],
}
record = {'source': sys.argv[3], 'mode': 'native --single-process', 'binaries': {}, 'cases': {}}
Expand All @@ -40,7 +48,8 @@ for name in ('bin/jsc', 'bin/testaot', 'CMakeCache.txt'):
record['binaries'][name] = hashlib.file_digest(stream, 'sha256').hexdigest()
deadline = time.monotonic() + 600
for suite, expected in selections.items():
selected = 'sharing-mode-and-namespace/compiled-tests' if suite == 'aot-namespace' else 'module-programs/'
selected = {'aot-namespace': 'sharing-mode-and-namespace/', 'aot-modules': 'module-programs/',
'aot-typed-arrays': 'stubs/typed-arrays-with-length'}[suite]
with (out / (suite + '.log')).open('w') as stdout, (out / (suite + '-stderr.log')).open('w') as stderr:
process = subprocess.Popen([str(build / 'bin/testaot'), 'native', '--single-process', selected],
stdout=stdout, stderr=stderr, start_new_session=True)
Expand Down Expand Up @@ -109,6 +118,6 @@ for suite, minimum in [('jsc-stress', 1400), ('jsc-modules', 1600)]:
assert 'testAdd64RegisterAddress()' in (out / 'testmasm.log').read_text()
aot = json.loads((out / 'aot-native.json').read_text())
assert aot['passed'] is True and aot['source'] == sys.argv[2]
assert [len(aot['cases'][name]) for name in ('aot-namespace', 'aot-modules')] == [2, 8]
assert [len(aot['cases'][name]) for name in ('aot-namespace', 'aot-modules', 'aot-typed-arrays')] == [5, 17, 1]
(out / 'arm64-gate.json').write_text(json.dumps({'passed': True, 'source': sys.argv[2], 'machine': platform.machine(), 'system': platform.system(), 'counts': counts, 'api_regressions': len(seen), 'aot_native': aot, 'accounting_modes': 5, 'sampling_modes': 5, 'testmasm': True, 'testffi': True, 'vm_entry_scope': True, 'foreign_stack_suspension': True, 'stack_execution_modes': 7, 'stack_cache': json.loads((out / 'jsc-stack/cache-files.json').read_text())}, indent=2) + '\n')
PY
Loading
Loading