diff --git a/eslint.config.js b/eslint.config.js index 7a40919f6d..25fc828e58 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -39,19 +39,6 @@ export default tseslint.config( // sense to be better safe than sorry. "semi": "error", - // Our code bases uses 2 spaces for indentation, and we enforce it here so - // files don't mix spaces, tabs or different indentation levels. - "indent": ["error", 2, { - "SwitchCase": 1, - "VariableDeclarator": "first", - "offsetTernaryExpressions": true, - "ignoredNodes": [ // FIXME: something's odd here - "ConditionalExpression > *", - "ConditionalExpression > * > *", - "ConditionalExpression > * > * > *" - ] - }], - // This is mostly visual style, making comments look uniform. "spaced-comment": ["error", "always", { "markers": ["/"], // triple-slash diff --git a/lib/binaryen.d.ts b/lib/binaryen.d.ts index facd164949..d2acae5bcf 100644 --- a/lib/binaryen.d.ts +++ b/lib/binaryen.d.ts @@ -1,2 +1,11 @@ export * from "binaryen"; export { default } from "binaryen"; + +// (low, high) shims around binaryen 129's BigInt-based i64 const/literal APIs. +// See binaryen.js for rationale. +export declare function _BinaryenLiteralInt64(literalOut: number, low: number, high: number): void; +export declare function _BinaryenLiteralFloat64Bits(literalOut: number, low: number, high: number): void; +export declare function _BinaryenConstGetValueI64Low(expr: number): number; +export declare function _BinaryenConstGetValueI64High(expr: number): number; +export declare function _BinaryenConstSetValueI64Low(expr: number, low: number): void; +export declare function _BinaryenConstSetValueI64High(expr: number, high: number): void; diff --git a/lib/binaryen.js b/lib/binaryen.js index facd164949..df335ad7b9 100644 --- a/lib/binaryen.js +++ b/lib/binaryen.js @@ -1,2 +1,59 @@ +// Public binaryen re-export. Patches binaryen 129's BigInt-based i64 C-ABI +// back into the (low, high) split convention used by AssemblyScript callers +// (src/module.ts) and by the host shim AS emits when bootstrapping itself to +// wasm (which imports `_BinaryenLiteralInt64` etc. from the "binaryen" module +// name and expects the legacy 3-arg signature). +// +// The patch mutates the shared `binaryen` module so that any code path that +// imports it — including the bootstrap wasm host shim's +// `import * as __import0 from "binaryen"` — sees the wrapped versions. A +// sentinel marker prevents double-patching when this file is loaded more than +// once (e.g. once via the bundled JS compiler and once via the wasm host shim). + +import binaryen from "binaryen"; export * from "binaryen"; -export { default } from "binaryen"; + +const SENTINEL = "__btcvision_lowHighShimsApplied__"; + +if (!binaryen[SENTINEL]) { + const _LiteralInt64_raw = binaryen._BinaryenLiteralInt64; + const _LiteralFloat64Bits_raw = binaryen._BinaryenLiteralFloat64Bits; + const _ConstGetValueI64_raw = binaryen._BinaryenConstGetValueI64; + const _ConstSetValueI64_raw = binaryen._BinaryenConstSetValueI64; + + const pack = (low, high) => (BigInt(high | 0) << 32n) | BigInt((low | 0) >>> 0); + + binaryen._BinaryenLiteralInt64 = (literalOut, low, high) => { + _LiteralInt64_raw(literalOut, pack(low, high)); + }; + binaryen._BinaryenLiteralFloat64Bits = (literalOut, low, high) => { + _LiteralFloat64Bits_raw(literalOut, pack(low, high)); + }; + binaryen._BinaryenConstGetValueI64Low = (expr) => + Number(BigInt.asIntN(32, _ConstGetValueI64_raw(expr))); + binaryen._BinaryenConstGetValueI64High = (expr) => + Number(BigInt.asIntN(32, _ConstGetValueI64_raw(expr) >> 32n)); + binaryen._BinaryenConstSetValueI64Low = (expr, low) => { + const value = _ConstGetValueI64_raw(expr); + const high = value >> 32n; + _ConstSetValueI64_raw(expr, (high << 32n) | BigInt((low | 0) >>> 0)); + }; + binaryen._BinaryenConstSetValueI64High = (expr, high) => { + const value = _ConstGetValueI64_raw(expr); + const lowMask = (1n << 32n) - 1n; + _ConstSetValueI64_raw(expr, (BigInt(high | 0) << 32n) | (value & lowMask)); + }; + + Object.defineProperty(binaryen, SENTINEL, { value: true }); +} + +// Re-export the (now patched) functions by name so consumers that import them +// from this module by name pick up the wrapped versions. +export const _BinaryenLiteralInt64 = binaryen._BinaryenLiteralInt64; +export const _BinaryenLiteralFloat64Bits = binaryen._BinaryenLiteralFloat64Bits; +export const _BinaryenConstGetValueI64Low = binaryen._BinaryenConstGetValueI64Low; +export const _BinaryenConstGetValueI64High = binaryen._BinaryenConstGetValueI64High; +export const _BinaryenConstSetValueI64Low = binaryen._BinaryenConstSetValueI64Low; +export const _BinaryenConstSetValueI64High = binaryen._BinaryenConstSetValueI64High; + +export default binaryen; diff --git a/package-lock.json b/package-lock.json index c88a90cad0..aa09cbabfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.29.3", "license": "Apache-2.0", "dependencies": { - "binaryen": "125.0.0-nightly.20251209", + "binaryen": "129.0.0", "long": "^5.3.2" }, "bin": { @@ -18,17 +18,17 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.3.5", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", + "@types/node": "^25.6.0", + "@typescript-eslint/eslint-plugin": "^8.59.0", + "@typescript-eslint/parser": "^8.59.0", "as-float": "^1.0.1", - "diff": "^8.0.3", - "esbuild": "^0.27.3", - "eslint": "^10.0.3", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", "glob": "^13.0.6", - "globals": "^17.4.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "globals": "^17.5.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.0" }, "engines": { "node": ">=24", @@ -40,9 +40,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", "cpu": [ "ppc64" ], @@ -57,9 +57,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", "cpu": [ "arm" ], @@ -74,9 +74,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", "cpu": [ "arm64" ], @@ -91,9 +91,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", "cpu": [ "x64" ], @@ -108,9 +108,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", "cpu": [ "arm64" ], @@ -125,9 +125,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", "cpu": [ "x64" ], @@ -142,9 +142,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", "cpu": [ "arm64" ], @@ -159,9 +159,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", "cpu": [ "x64" ], @@ -176,9 +176,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", "cpu": [ "arm" ], @@ -193,9 +193,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", "cpu": [ "arm64" ], @@ -210,9 +210,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", "cpu": [ "ia32" ], @@ -227,9 +227,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", "cpu": [ "loong64" ], @@ -244,9 +244,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", "cpu": [ "mips64el" ], @@ -261,9 +261,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", "cpu": [ "ppc64" ], @@ -278,9 +278,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", "cpu": [ "riscv64" ], @@ -295,9 +295,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", "cpu": [ "s390x" ], @@ -312,9 +312,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", "cpu": [ "x64" ], @@ -329,9 +329,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", "cpu": [ "arm64" ], @@ -346,9 +346,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", "cpu": [ "x64" ], @@ -363,9 +363,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", "cpu": [ "arm64" ], @@ -380,9 +380,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", "cpu": [ "x64" ], @@ -397,9 +397,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", "cpu": [ "arm64" ], @@ -414,9 +414,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", "cpu": [ "x64" ], @@ -431,9 +431,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", "cpu": [ "arm64" ], @@ -448,9 +448,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", "cpu": [ "ia32" ], @@ -465,9 +465,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", "cpu": [ "x64" ], @@ -511,13 +511,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.23.3", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", - "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^3.0.3", + "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" }, @@ -526,22 +526,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", - "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1" + "@eslint/core": "^1.2.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", - "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -573,9 +573,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", - "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -583,13 +583,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", - "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1", + "@eslint/core": "^1.2.1", "levn": "^0.4.1" }, "engines": { @@ -597,29 +597,43 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -670,30 +684,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.19.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", + "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/type-utils": "8.59.0", + "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -703,22 +717,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", + "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3" }, "engines": { @@ -730,18 +744,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", + "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.0", + "@typescript-eslint/types": "^8.59.0", "debug": "^4.4.3" }, "engines": { @@ -752,18 +766,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", + "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -774,9 +788,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", + "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", "dev": true, "license": "MIT", "engines": { @@ -787,21 +801,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", + "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -812,13 +826,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", + "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", "dev": true, "license": "MIT", "engines": { @@ -830,21 +844,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", + "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.0", + "@typescript-eslint/tsconfig-utils": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -854,20 +868,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", + "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -878,17 +892,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", + "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -936,9 +950,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -970,9 +984,9 @@ } }, "node_modules/binaryen": { - "version": "125.0.0-nightly.20251209", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-125.0.0-nightly.20251209.tgz", - "integrity": "sha512-d8/gKpRFDNAEYvkNrowb2lz2o47gA5HlyBKbqymzlwpCYZ+wCcH9rdH+aoXekQg0C6GPbTnZEmgXobjrXcQaEw==", + "version": "129.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0.tgz", + "integrity": "sha512-NyF5J0SfRoLDthpPh36FGTycOEv3Eqnkq3+mP5Cqt6iD9BLGGJMEVuPzu81nhLy2MMpPKmRTM9VLZihfyRQv8A==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", @@ -987,9 +1001,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1040,9 +1054,9 @@ "license": "MIT" }, "node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1050,9 +1064,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1063,32 +1077,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, "node_modules/escape-string-regexp": { @@ -1105,18 +1119,18 @@ } }, "node_modules/eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz", - "integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz", + "integrity": "sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.3", - "@eslint/config-helpers": "^0.5.2", - "@eslint/core": "^1.1.1", - "@eslint/plugin-kit": "^0.6.1", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.5.5", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -1127,7 +1141,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", - "espree": "^11.1.1", + "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1376,9 +1390,9 @@ } }, "node_modules/flatted": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz", - "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -1414,9 +1428,9 @@ } }, "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", "dev": true, "license": "MIT", "engines": { @@ -1544,9 +1558,9 @@ "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1554,13 +1568,13 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -1681,9 +1695,9 @@ } }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -1750,14 +1764,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -1767,9 +1781,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -1793,9 +1807,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1807,16 +1821,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", + "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.0", + "@typescript-eslint/parser": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1827,13 +1841,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index a1370d805e..bf88e0df7f 100644 --- a/package.json +++ b/package.json @@ -25,22 +25,22 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "125.0.0-nightly.20251209", + "binaryen": "129.0.0", "long": "^5.3.2" }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.3.5", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "typescript-eslint": "^8.56.1", + "@types/node": "^25.6.0", + "@typescript-eslint/eslint-plugin": "^8.59.0", + "@typescript-eslint/parser": "^8.59.0", + "typescript-eslint": "^8.59.0", "as-float": "^1.0.1", - "diff": "^8.0.3", - "esbuild": "^0.27.3", - "eslint": "^10.0.3", - "globals": "^17.4.0", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", + "globals": "^17.5.0", "glob": "^13.0.6", - "typescript": "^5.9.3" + "typescript": "^6.0.3" }, "type": "module", "exports": { @@ -75,8 +75,8 @@ }, "scripts": { "check": "npm run check:config && npm run check:import && npm run lint", - "check:config": "tsc --noEmit -p src --diagnostics --listFiles", - "check:import": "tsc --noEmit --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", + "check:config": "tsc --noEmit --rootDir . -p src --diagnostics --listFiles", + "check:import": "tsc --noEmit --ignoreConfig --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", "lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", "build": "node scripts/build", "watch": "node scripts/build --watch", diff --git a/scripts/build-dts.js b/scripts/build-dts.js index 0493075824..ead29c6964 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -350,6 +350,16 @@ export function generateSrc() { stdout }); + // src/glue/js/index.ts is intentionally excluded from generation above (it is + // a side-effect-only loader for the JS glue and would emit a chain of imports + // referencing other excluded files). However, src/index-js.ts contains + // `import "./glue/js/index"`, which under TS >= 6 nodenext module resolution + // raises TS2882 unless the referenced module is declared. Emit an empty + // module stub so the side-effect import resolves; the ambient declarations + // it would have brought in (i64, float, collections shims) are already + // emitted at the top level by the third generator pass above. + stdout.push("\ndeclare module '" + prefix + "/src/glue/js/index' {}\n"); + const source = stdout.join("").replace(/\/\/\/ ]*>\r?\n/g, ""); const sourceFile = ts.createSourceFile("assemblyscript.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); const result = transformTypes(sourceFile); diff --git a/src/compiler.ts b/src/compiler.ts index 56467d4f67..d66a87c934 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -549,6 +549,12 @@ export class Compiler extends DiagnosticEmitter { // we should mark the module as closed-world when we're definitely sure it is. module.setClosedWorld(true); + // Pre-create the default memory so that binaryen helpers like + // _BinaryenExpressionGetSideEffects can resolve memory references that + // appear in compiled IR. The real configuration (page counts, segments + // and imports/exports) is finalized later via initDefaultMemory. + module.setMemory(0, Module.UNLIMITED_MEMORY, [], options.target, null, CommonNames.DefaultMemory, false); + // obtain the main start function let startFunctionInstance = this.currentFlow.targetFunction; assert(startFunctionInstance.internalName == BuiltinNames.start); @@ -7827,6 +7833,7 @@ export class Compiler extends DiagnosticEmitter { contextualType: Type, constraints: Constraints ): ExpressionRef { + let module = this.module; let declaration = expression.declaration.clone(); // generic contexts can have multiple assert(!declaration.typeParameters); // function expression cannot be generic let flow = this.currentFlow; @@ -7847,6 +7854,21 @@ export class Compiler extends DiagnosticEmitter { : null; if (existingInstance && existingInstance.kind == ElementKind.Function) { let existingFunc = existingInstance; + // For semantically named function declarations sharing the same scope-qualified + // name, distinguish a recompilation pass (same source declaration) from an actual + // duplicate declaration (different source location). + if (!isSemanticallyAnonymous) { + let existingDecl = existingFunc.prototype.declaration; + let existingRange = existingDecl.range; + let currentRange = expression.declaration.range; + if (existingRange.source !== currentRange.source || existingRange.start !== currentRange.start) { + this.error( + DiagnosticCode.Duplicate_function_implementation, + expression.declaration.name.range + ); + return module.unreachable(); + } + } if (existingFunc.is(CommonFlags.Compiled)) { // Already compiled - just return a reference to it let offset = this.ensureRuntimeFunction(existingFunc); @@ -7876,7 +7898,6 @@ export class Compiler extends DiagnosticEmitter { } let instance: Function | null; let contextualTypeArguments = cloneMap(flow.contextualTypeArguments); - let module = this.module; // compile according to context. this differs from a normal function in that omitted parameter // and return types can be inferred and omitted arguments can be replaced with dummies. diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index fdc2bd7492..ea2e846432 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -35,6 +35,7 @@ export type GlobalRef = Ref; export type TagRef = Ref; export type TableRef = Ref; export type ElementSegmentRef = Ref; +export type DataSegmentRef = Ref; export type RelooperRef = Ref; export type RelooperBlockRef = Ref; export type ExpressionRunnerRef = Ref; @@ -95,12 +96,16 @@ export declare function _BinaryenModuleDispose(module: ModuleRef): void; export declare function _BinaryenSizeofLiteral(): usize; export declare function _BinaryenLiteralInt32(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, x: i32, y: i32): void; +// Signature reflects the JS-glue wrapper in binaryen.js, which adapts the +// portable (low, high) i32 calling convention used by callers in src/module.ts +// to binaryen 129's BigInt-based C-ABI for i64 literals. +export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, low: i32, high: i32): void; export declare function _BinaryenLiteralFloat32(literalOut: LiteralRef, x: f32): void; export declare function _BinaryenLiteralFloat64(literalOut: LiteralRef, x: f64): void; export declare function _BinaryenLiteralVec128(literalOut: LiteralRef, x: ArrayRef): void; export declare function _BinaryenLiteralFloat32Bits(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, x: i32, y: i32): void; +// See _BinaryenLiteralInt64 above for the (low, high) shim rationale. +export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, low: i32, high: i32): void; export declare function _BinaryenExpressionGetId(expr: ExpressionRef): ExpressionId; export declare function _BinaryenExpressionGetType(expr: ExpressionRef): TypeRef; @@ -216,7 +221,6 @@ export declare function _BinaryenMemoryGrowSetDelta(expr: ExpressionRef, delta: export declare function _BinaryenLoad(module: ModuleRef, bytes: u32, signed: bool, offset: u32, align: u32, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef): ExpressionRef; export declare function _BinaryenLoadIsAtomic(expr: ExpressionRef): bool; -export declare function _BinaryenLoadSetAtomic(expr: ExpressionRef, isAtomic: bool): void; export declare function _BinaryenLoadIsSigned(expr: ExpressionRef): bool; export declare function _BinaryenLoadSetSigned(expr: ExpressionRef, isSigned: bool): void; export declare function _BinaryenLoadGetOffset(expr: ExpressionRef): u32; @@ -228,11 +232,10 @@ export declare function _BinaryenLoadSetAlign(expr: ExpressionRef, align: u32): export declare function _BinaryenLoadGetPtr(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenLoadSetPtr(expr: ExpressionRef, ptrExpr: ExpressionRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef, memoryOrder: u8): ExpressionRef; export declare function _BinaryenStore(module: ModuleRef, bytes: u32, offset: u32, align: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; export declare function _BinaryenStoreIsAtomic(expr: ExpressionRef): bool; -export declare function _BinaryenStoreSetAtomic(expr: ExpressionRef, isAtomic: bool): void; export declare function _BinaryenStoreGetBytes(expr: ExpressionRef): u32; export declare function _BinaryenStoreSetBytes(expr: ExpressionRef, bytes: u32): void; export declare function _BinaryenStoreGetOffset(expr: ExpressionRef): u32; @@ -246,15 +249,17 @@ export declare function _BinaryenStoreSetValue(expr: ExpressionRef, valueExpr: E export declare function _BinaryenStoreGetValueType(expr: ExpressionRef): TypeRef; export declare function _BinaryenStoreSetValueType(expr: ExpressionRef, valueType: TypeRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: u8): ExpressionRef; export declare function _BinaryenConst(module: ModuleRef, value: LiteralRef): ExpressionRef; export declare function _BinaryenConstGetValueI32(expr: ExpressionRef): i32; export declare function _BinaryenConstSetValueI32(expr: ExpressionRef, value: i32): void; +// (low, high) split shims around binaryen 129's BigInt-based i64 const accessors. +// Implemented in the JS glue (binaryen.js) — see _BinaryenLiteralInt64 above. export declare function _BinaryenConstGetValueI64Low(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64Low(expr: ExpressionRef, value: i32): void; export declare function _BinaryenConstGetValueI64High(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64High(expr: ExpressionRef, value: i32): void; +export declare function _BinaryenConstSetValueI64Low(expr: ExpressionRef, low: i32): void; +export declare function _BinaryenConstSetValueI64High(expr: ExpressionRef, high: i32): void; export declare function _BinaryenConstGetValueF32(expr: ExpressionRef): f32; export declare function _BinaryenConstSetValueF32(expr: ExpressionRef, value: f32): void; export declare function _BinaryenConstGetValueF64(expr: ExpressionRef): f64; @@ -296,7 +301,7 @@ export declare function _BinaryenNop(module: ModuleRef): ExpressionRef; export declare function _BinaryenUnreachable(module: ModuleRef): ExpressionRef; -export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: u8): ExpressionRef; export declare function _BinaryenAtomicRMWGetOp(expr: ExpressionRef): Op; export declare function _BinaryenAtomicRMWSetOp(expr: ExpressionRef, op: Op): void; export declare function _BinaryenAtomicRMWGetBytes(expr: ExpressionRef): u32; @@ -308,7 +313,7 @@ export declare function _BinaryenAtomicRMWSetPtr(expr: ExpressionRef, ptrExpr: E export declare function _BinaryenAtomicRMWGetValue(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenAtomicRMWSetValue(expr: ExpressionRef, valueExpr: ExpressionRef): void; -export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: u8): ExpressionRef; export declare function _BinaryenAtomicCmpxchgGetBytes(expr: ExpressionRef): u32; export declare function _BinaryenAtomicCmpxchgSetBytes(expr: ExpressionRef, bytes: u32): void; export declare function _BinaryenAtomicCmpxchgGetOffset(expr: ExpressionRef): u32; @@ -336,7 +341,7 @@ export declare function _BinaryenAtomicNotifySetPtr(expr: ExpressionRef, ptrExpr export declare function _BinaryenAtomicNotifyGetNotifyCount(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenAtomicNotifySetNotifyCount(expr: ExpressionRef, notifyCountExpr: ExpressionRef): void; -export declare function _BinaryenAtomicFence(module: ModuleRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicFence(module: ModuleRef): ExpressionRef; export declare function _BinaryenAtomicFenceGetOrder(expr: ExpressionRef): u8; // unused export declare function _BinaryenAtomicFenceSetOrder(expr: ExpressionRef, order: u8): void; // unused @@ -521,7 +526,7 @@ export declare function _BinaryenThrowRemoveOperandAt(expr: ExpressionRef, index export declare function _BinaryenRethrow(module: ModuleRef, target: StringRef): ExpressionRef; export declare function _BinaryenRethrowGetTarget(expr: ExpressionRef): StringRef; -export declare function _BinaryenRethrowSetDepth(expr: ExpressionRef, target: StringRef): void; +export declare function _BinaryenRethrowSetTarget(expr: ExpressionRef, target: StringRef): void; export declare function _BinaryenTupleMake(module: ModuleRef, operandExprs: ArrayRef, numOperands: Index): ExpressionRef; export declare function _BinaryenTupleMakeGetNumOperands(expr: ExpressionRef): Index; @@ -549,7 +554,7 @@ export declare function _BinaryenI31GetSetI31(expr: ExpressionRef, i31Expr: Expr export declare function _BinaryenI31GetIsSigned(expr: ExpressionRef): bool; export declare function _BinaryenI31GetSetSigned(expr: ExpressionRef, signed: bool): void; -export declare function _BinaryenCallRef(module: ModuleRef, target: ExpressionRef, operands: ArrayRef, numOperands: Index, type: TypeRef, isReturn: bool): ExpressionRef; +export declare function _BinaryenCallRef(module: ModuleRef, target: ExpressionRef, operands: ArrayRef, numOperands: Index, type: TypeRef): ExpressionRef; export declare function _BinaryenCallRefGetNumOperands(expr: ExpressionRef): Index; export declare function _BinaryenCallRefGetOperandAt(expr: ExpressionRef, index: Index): ExpressionRef; export declare function _BinaryenCallRefSetOperandAt(expr: ExpressionRef, index: Index, operandExpr: ExpressionRef): void; @@ -701,7 +706,7 @@ export declare function _BinaryenArrayInitElemSetOffset(expr: ExpressionRef, off export declare function _BinaryenArrayInitElemGetSize(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenArrayInitElemSetSize(expr: ExpressionRef, size: ExpressionRef): void; -export declare function _BinaryenStringNew(module: ModuleRef, op: Op, ref: ExpressionRef, start: ExpressionRef): ExpressionRef; +export declare function _BinaryenStringNew(module: ModuleRef, op: Op, ref: ExpressionRef, start: ExpressionRef, end: ExpressionRef): ExpressionRef; export declare function _BinaryenStringNewGetOp(expr: ExpressionRef): Op; export declare function _BinaryenStringNewSetOp(expr: ExpressionRef, op: Op): void; export declare function _BinaryenStringNewGetRef(expr: ExpressionRef): ExpressionRef; @@ -821,7 +826,7 @@ export declare function _BinaryenTagGetName(tag: TagRef): StringRef; export declare function _BinaryenTagGetParams(tag: TagRef): TypeRef; export declare function _BinaryenTagGetResults(tag: TagRef): TypeRef; -export declare function _BinaryenAddTable(module: ModuleRef, name: StringRef, initial: Index, maximum: Index, type: TypeRef): TableRef; +export declare function _BinaryenAddTable(module: ModuleRef, name: StringRef, initial: Index, maximum: Index, type: TypeRef, addressType: TypeRef): TableRef; export declare function _BinaryenRemoveTable(module: ModuleRef, table: StringRef): void; export declare function _BinaryenGetNumTables(module: ModuleRef): Index; export declare function _BinaryenGetTable(module: ModuleRef, name: StringRef): TableRef; @@ -840,15 +845,15 @@ export declare function _BinaryenTableSetType(table: TableRef, type: TypeRef): v export declare function _BinaryenAddActiveElementSegment(module: ModuleRef, table: StringRef, name: StringRef, funcNames: ArrayRef, numFuncNames: Index, offset: ExpressionRef): ElementSegmentRef; export declare function _BinaryenAddPassiveElementSegment(module: ModuleRef, name: StringRef, funcNames: ArrayRef, numFuncNames: Index): ElementSegmentRef; export declare function _BinaryenRemoveElementSegment(module: ModuleRef, name: StringRef): void; -export declare function _BinaryenGetNumElementSegments(module: ModuleRef, name: StringRef): Index; +export declare function _BinaryenGetNumElementSegments(module: ModuleRef): Index; export declare function _BinaryenGetElementSegment(module: ModuleRef, name: StringRef): ElementSegmentRef; export declare function _BinaryenGetElementSegmentByIndex(module: ModuleRef, index: Index): ElementSegmentRef; export declare function _BinaryenSetMemory(module: ModuleRef, initial: Index, maximum: Index, exportName: StringRef, segmentNames: ArrayRef, segmentDatas: ArrayRef>, segmentPassive: ArrayRef, segmentOffsets: ArrayRef, segmentSizes: ArrayRef, numSegments: Index, shared: bool, memory64: bool, name: StringRef): void; export declare function _BinaryenGetNumMemorySegments(module: ModuleRef): Index; -export declare function _BinaryenGetMemorySegmentByteOffset(module: ModuleRef, segmentName: StringRef): u32; -export declare function _BinaryenGetMemorySegmentByteLength(module: ModuleRef, segmentName: StringRef): usize; -export declare function _BinaryenCopyMemorySegmentData(module: ModuleRef, segmentName: StringRef, buffer: ArrayRef): void; +export declare function _BinaryenGetMemorySegmentByteOffset(module: ModuleRef, segmentRef: DataSegmentRef): u32; +export declare function _BinaryenGetMemorySegmentByteLength(segmentRef: DataSegmentRef): usize; +export declare function _BinaryenCopyMemorySegmentData(segmentRef: DataSegmentRef, buffer: ArrayRef): void; export declare function _BinaryenAddDataSegment(module: ModuleRef, segmentName: StringRef, memoryName: StringRef, segmentPassive: bool, segmentOffset: ExpressionRef, segmentData: ArrayRef, segmentSize: Index): void; export declare function _BinaryenSetStart(module: ModuleRef, start: FunctionRef): void; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 295afb7635..60e4036e4d 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -178,7 +178,6 @@ export const { _BinaryenLoad, _BinaryenLoadIsAtomic, - _BinaryenLoadSetAtomic, _BinaryenLoadIsSigned, _BinaryenLoadSetSigned, _BinaryenLoadGetOffset, @@ -193,7 +192,6 @@ export const { _BinaryenStore, _BinaryenStoreIsAtomic, - _BinaryenStoreSetAtomic, _BinaryenStoreGetBytes, _BinaryenStoreSetBytes, _BinaryenStoreGetOffset, @@ -212,8 +210,8 @@ export const { _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, _BinaryenConstGetValueI64Low, - _BinaryenConstSetValueI64Low, _BinaryenConstGetValueI64High, + _BinaryenConstSetValueI64Low, _BinaryenConstSetValueI64High, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, @@ -481,7 +479,7 @@ export const { _BinaryenRethrow, _BinaryenRethrowGetTarget, - _BinaryenRethrowSetDepth, + _BinaryenRethrowSetTarget, _BinaryenTupleMake, _BinaryenTupleMakeGetNumOperands, @@ -918,4 +916,10 @@ export const { } = binaryen; +// Note: the i64 literal/const accessors above (LiteralInt64, LiteralFloat64Bits, +// ConstGetValueI64Low/High, ConstSetValueI64Low/High) are sourced from +// lib/binaryen.js, which patches binaryen 129's BigInt-based i64 C-ABI back +// into the (low, high) split convention used by callers here and by the +// bootstrapped wasm build (which imports "binaryen" directly). + export default binaryen; diff --git a/src/module.ts b/src/module.ts index fede5675f1..142e53c74c 100644 --- a/src/module.ts +++ b/src/module.ts @@ -217,7 +217,10 @@ export const enum FeatureFlags { FP16 = 262144 /* _BinaryenFeatureFP16 */, BulkMemoryOpt = 524288 /* _BinaryenFeatureBulkMemoryOpt */, CallIndirectOverlong = 1048576 /* _BinaryenFeatureCallIndirectOverlong */, - All = 4194303 /* _BinaryenFeatureAll */ + RelaxedAtomics = 4194304 /* _BinaryenFeatureRelaxedAtomics */, + CustomPageSizes = 8388608 /* _BinaryenFeatureCustomPageSizes */, + Multibyte = 16777216 /* _BinaryenFeatureMultibyte */, + All = 33554431 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. See wasm-delegations.def in Binaryen. */ @@ -299,26 +302,31 @@ export const enum ExpressionId { ArrayNewFixed = 76 /* _BinaryenArrayNewFixedId */, ArrayGet = 77 /* _BinaryenArrayGetId */, ArraySet = 78 /* _BinaryenArraySetId */, - ArrayLen = 79 /* _BinaryenArrayLenId */, - ArrayCopy = 80 /* _BinaryenArrayCopyId */, - ArrayFill = 81 /* _BinaryenArrayFillId */, - ArrayInitData = 82 /* _BinaryenArrayInitDataId */, - ArrayInitElem = 83 /* _BinaryenArrayInitElemId */, - RefAs = 86 /* _BinaryenRefAsId */, - StringNew = 87 /* _BinaryenStringNewId */, - StringConst = 88 /* _BinaryenStringConstId */, - StringMeasure = 89 /* _BinaryenStringMeasureId */, - StringEncode = 90 /* _BinaryenStringEncodeId */, - StringConcat = 91 /* _BinaryenStringConcatId */, - StringEq = 92 /* _BinaryenStringEqId */, - StringWTF16Get = 94 /* _BinaryenStringWTF16GetId */, - StringSliceWTF = 95 /* _BinaryenStringSliceWTFId */, - ContNew = 96 /* _BinaryenContNewId */, - ContBind = 97 /* _BinaryenContBindId */, - Suspend = 98 /* _BinaryenSuspendId */, - Resume = 99 /* _BinaryenResumeId */, - ResumeThrow = 100 /* _BinaryenResumeThrowId */, - StackSwitch = 101 /* _BinaryenStackSwitchId */ + ArrayLoad = 79 /* _BinaryenArrayLoadId */, + ArrayStore = 80 /* _BinaryenArrayStoreId */, + ArrayLen = 81 /* _BinaryenArrayLenId */, + ArrayCopy = 82 /* _BinaryenArrayCopyId */, + ArrayFill = 83 /* _BinaryenArrayFillId */, + ArrayInitData = 84 /* _BinaryenArrayInitDataId */, + ArrayInitElem = 85 /* _BinaryenArrayInitElemId */, + ArrayRMW = 86 /* _BinaryenArrayRMWId */, + ArrayCmpxchg = 87 /* _BinaryenArrayCmpxchgId */, + RefAs = 88 /* _BinaryenRefAsId */, + StringNew = 89 /* _BinaryenStringNewId */, + StringConst = 90 /* _BinaryenStringConstId */, + StringMeasure = 91 /* _BinaryenStringMeasureId */, + StringEncode = 92 /* _BinaryenStringEncodeId */, + StringConcat = 93 /* _BinaryenStringConcatId */, + StringEq = 94 /* _BinaryenStringEqId */, + StringTest = 95 /* _BinaryenStringTestId */, + StringWTF16Get = 96 /* _BinaryenStringWTF16GetId */, + StringSliceWTF = 97 /* _BinaryenStringSliceWTFId */, + ContNew = 98 /* _BinaryenContNewId */, + ContBind = 99 /* _BinaryenContBindId */, + Suspend = 100 /* _BinaryenSuspendId */, + Resume = 101 /* _BinaryenResumeId */, + ResumeThrow = 102 /* _BinaryenResumeThrowId */, + StackSwitch = 103 /* _BinaryenStackSwitchId */ } /** Binaryen external kind constants. */ @@ -1083,6 +1091,13 @@ export const enum BinaryOp { GeUSize } +/** Binaryen atomic memory order constants. */ +export const enum MemoryOrder { + Unordered = 0 /* _BinaryenMemoryOrderUnordered */, + SeqCst = 1 /* _BinaryenMemoryOrderSeqCst */, + AcqRel = 2 /* _BinaryenMemoryOrderAcqRel */ +} + /** Binaryen atomic read-modify-write operation constants. */ export const enum AtomicRMWOp { /** i32.atomic.rmw.add, i32.atomic.rmw8.add_u, i32.atomic.rmw16.add_u, i64.atomic.rmw.add, i64.atomic.rmw8.add_u, i64.atomic.rmw16.add_u, i64.atomic.rmw32.add_u */ @@ -1215,31 +1230,24 @@ export const enum SIMDLoadStoreLaneOp { export const enum SIMDTernaryOp { /** v128.bitselect */ Bitselect = 0 /* _BinaryenBitselectVec128 */, - - // Relaxed SIMD for F16 - /** f16x8.relaxed_madd */ - RelaxedMaddVecF16x8 = 1 /* TODO_BinaryenRelaxedMaddVecF16x8 */, - /** f16x8.relaxed_nmadd */ - RelaxedNmaddVecF16x8 = 2 /* TODO_BinaryenRelaxedNmaddVecF16x8 */, - /** f32x4.relaxed_madd */ - RelaxedMaddF32x4 = 3 /* _BinaryenRelaxedMaddVecF32x4 */, + RelaxedMaddF32x4 = 1 /* _BinaryenRelaxedMaddVecF32x4 */, /** f32x4.relaxed_nmadd */ - RelaxedNmaddF32x4 = 4 /* _BinaryenRelaxedNmaddVecF32x4 */, + RelaxedNmaddF32x4 = 2 /* _BinaryenRelaxedNmaddVecF32x4 */, /** f64x2.relaxed_madd */ - RelaxedMaddF64x2 = 5 /* _BinaryenRelaxedMaddVecF64x2 */, + RelaxedMaddF64x2 = 3 /* _BinaryenRelaxedMaddVecF64x2 */, /** f64x2.relaxed_nmadd */ - RelaxedNmaddF64x2 = 6 /* _BinaryenRelaxedNmaddVecF64x2 */, + RelaxedNmaddF64x2 = 4 /* _BinaryenRelaxedNmaddVecF64x2 */, /** i8x16.relaxed_laneselect */ - RelaxedLaneselectI8x16 = 7 /* _BinaryenLaneselectI8x16 */, + RelaxedLaneselectI8x16 = 5 /* _BinaryenLaneselectI8x16 */, /** i16x8.relaxed_laneselect */ - RelaxedLaneselectI16x8 = 8 /* _BinaryenLaneselectI16x8 */, + RelaxedLaneselectI16x8 = 6 /* _BinaryenLaneselectI16x8 */, /** i32x4.relaxed_laneselect */ - RelaxedLaneselectI32x4 = 9 /* _BinaryenLaneselectI32x4 */, + RelaxedLaneselectI32x4 = 7 /* _BinaryenLaneselectI32x4 */, /** i64x2.relaxed_laneselect */ - RelaxedLaneselectI64x2 = 10 /* _BinaryenLaneselectI64x2 */, + RelaxedLaneselectI64x2 = 8 /* _BinaryenLaneselectI64x2 */, /** i32x4.relaxed_dot_i8x16_i7x16_add_s */ - RelaxedDotI8x16I7x16AddToI32x4 = 11 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, + RelaxedDotI8x16I7x16AddToI32x4 = 9 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, } /** Binaryen RefAs operation constants. */ @@ -1583,7 +1591,7 @@ export class Module { name: string = CommonNames.DefaultMemory ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr); + return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr, MemoryOrder.SeqCst); } atomic_store( @@ -1595,7 +1603,7 @@ export class Module { name: string = CommonNames.DefaultMemory ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr, MemoryOrder.SeqCst); } atomic_rmw( @@ -1608,7 +1616,7 @@ export class Module { name: string = CommonNames.DefaultMemory ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr, MemoryOrder.SeqCst); } atomic_cmpxchg( @@ -1621,7 +1629,7 @@ export class Module { name: string = CommonNames.DefaultMemory ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr); + return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr, MemoryOrder.SeqCst); } atomic_wait( @@ -1645,8 +1653,7 @@ export class Module { } atomic_fence(name: string | null = null): ExpressionRef { - let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicFence(this.ref, cStr); + return binaryen._BinaryenAtomicFence(this.ref); } // statements @@ -2393,6 +2400,22 @@ export class Module { /** Unlimited table constant. */ static readonly UNLIMITED_TABLE: Index = -1; + addTable( + name: string, + initial: Index, + maximum: Index, + type: TypeRef + ): void { + let cStr = this.allocStringCached(name); + let tableRef = binaryen._BinaryenGetTable(this.ref, cStr); + if (!tableRef) { + binaryen._BinaryenAddTable(this.ref, cStr, initial, maximum, type, 0); + } else { + binaryen._BinaryenTableSetInitial(tableRef, initial); + binaryen._BinaryenTableSetMax(tableRef, maximum); + } + } + addFunctionTable( name: string, initial: Index, @@ -2409,7 +2432,7 @@ export class Module { let cArr = allocPtrArray(names); let tableRef = binaryen._BinaryenGetTable(this.ref, cStr); if (!tableRef) { - tableRef = binaryen._BinaryenAddTable(this.ref, cStr, initial, maximum, TypeRef.Funcref); + tableRef = binaryen._BinaryenAddTable(this.ref, cStr, initial, maximum, TypeRef.Funcref, 0); } else { binaryen._BinaryenTableSetInitial(tableRef, initial); binaryen._BinaryenTableSetMax(tableRef, maximum); diff --git a/std/assembly/util/number.ts b/std/assembly/util/number.ts index ebd9d093cd..d0e2074272 100644 --- a/std/assembly/util/number.ts +++ b/std/assembly/util/number.ts @@ -83,7 +83,7 @@ f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; @lazy @inline const ANY_DIGITS = "0123456789abcdefghijklmnopqrstuvwxyz"; // @ts-ignore: decorator -@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */ +@lazy @inline const EXP_POWERS = memory.data([ -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, @@ -93,7 +93,7 @@ f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; 375, 402, 428, 455, 481, 508, 534, 561, 588, 614, 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, 907, 933, 960, 986, 1013, 1039, 1066 -/* eslint-enable indent */]); +]); // 1e-348, 1e-340, ..., 1e340 // @ts-ignore: decorator diff --git a/tests/allocators/runner.js b/tests/allocators/runner.js index b4601c7a92..64fb9d23b6 100644 --- a/tests/allocators/runner.js +++ b/tests/allocators/runner.js @@ -78,7 +78,7 @@ export default function runner(exports, runs, allocs) { let ptr = alloc(64, 0); if (ptr !== base) throw Error("expected " + base + " but got " + ptr); reset(); - } catch { + } catch(e) { // should now be possible to reuse the entire memory // just try a large portion of the memory here, for example because of // SL+1 for allocations in TLSF diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat index 590d065e98..1cffd57324 100644 --- a/tests/compiler/assignment-chain.release.wat +++ b/tests/compiler/assignment-chain.release.wat @@ -1308,8 +1308,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1337,7 +1335,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1351,7 +1350,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 137a174549..68e41b7c66 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -1428,8 +1428,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1457,7 +1455,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1471,7 +1470,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index d1b28b02d2..f7a6ac489a 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -1361,8 +1361,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1390,7 +1388,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1404,7 +1403,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index 91888d58e4..cdadef8adc 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -1428,8 +1428,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1457,7 +1455,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1471,7 +1470,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index 3a17e17829..3ab1b18499 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -632,13 +632,9 @@ global.set $builtins/I f64.const 1.24e-322 global.set $builtins/F - memory.size - drop i32.const 1 memory.grow drop - memory.size - drop i32.const 1 memory.grow drop diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat index c94bcc5ecd..734df55d39 100644 --- a/tests/compiler/call-inferred.release.wat +++ b/tests/compiler/call-inferred.release.wat @@ -1304,8 +1304,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1333,7 +1331,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1347,7 +1346,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index fb3b182a83..d0d115b964 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -1352,8 +1352,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1381,7 +1379,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1395,7 +1394,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index 65c4874c16..108750dc60 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -1304,8 +1304,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1333,7 +1331,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1347,7 +1346,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index a1f6b8b48a..92114558b3 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -1353,8 +1353,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1382,7 +1380,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1396,7 +1395,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1569,31 +1570,29 @@ local.get $1 ) (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) - block $default - block $case5 - block $case4 - block $case3 - block $case2 - block $case1 - block $case0 + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 14 i32.sub - br_table $case4 $default $case0 $case1 $case5 $case2 $case3 $default + br_table $case4 $tablify|0 $case0 $case1 $case5 $case2 $case3 $tablify|0 end - local.get $0 - i32.load - return + unreachable end local.get $0 i32.load return end local.get $0 - call $class-implements/B3#get:foo + i32.load return end local.get $0 @@ -1601,70 +1600,71 @@ return end local.get $0 - i32.load + call $class-implements/B3#get:foo return end local.get $0 - call $class-implements/B2#get:foo + i32.load return end - unreachable + local.get $0 + call $class-implements/B2#get:foo ) (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) block $folding-inner0 - block $default - block $case5 - block $case3 - block $case2 + block $case5 + block $case3 + block $case2 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 14 i32.sub - br_table $folding-inner0 $default $folding-inner0 $folding-inner0 $case5 $case2 $case3 $default + br_table $folding-inner0 $tablify|0 $folding-inner0 $folding-inner0 $case5 $case2 $case3 $tablify|0 end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return + unreachable end local.get $0 local.get $1 call $class-implements/B3#set:foo return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + call $class-implements/B3#set:foo return end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end local.get $0 local.get $1 @@ -2244,43 +2244,37 @@ end call $class-implements/F#constructor global.set $class-implements/h - global.get $~lib/memory/__stack_pointer - global.get $class-implements/h - local.tee $0 - i32.store - block $__inlined_func$class-implements/I#foo@override$167 - block $default12 - block $case3 - block $case2 - block $case1 - block $case013 + block $__inlined_func$class-implements/I#foo@override$167 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-implements/h + local.tee $0 + i32.store + block $case3 + block $case2 + block $case1 + block $case013 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case1 $default12 $case2 $default12 $case3 $default12 $case3 $case013 $default12 + br_table $case1 $tablify|0 $case2 $tablify|0 $case3 $tablify|0 $case3 $case013 $tablify|0 end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + unreachable end - i32.const 1 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 2 - local.set $0 + i32.const 1 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 3 - local.set $0 + i32.const 2 br $__inlined_func$class-implements/I#foo@override$167 end - unreachable + i32.const 3 end - local.get $0 i32.const 4 i32.ne if @@ -2291,69 +2285,64 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$class-implements/J#foo@override$169 - block $default14 - block $case315 - block $case216 - block $case117 - block $case018 + block $__inlined_func$class-implements/J#foo@override$169 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $case315 + block $case216 + block $case117 + block $case018 + block $tablify|00 local.get $0 i32.const 8 i32.sub i32.load i32.const 8 i32.sub - br_table $case216 $default14 $case216 $case117 $case315 $case018 $default14 + br_table $case216 $tablify|00 $case216 $case117 $case315 $case018 $tablify|00 end unreachable end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + unreachable end - i32.const 3 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/J#foo@override$169 end - i32.const 1 - local.set $0 + i32.const 3 br $__inlined_func$class-implements/J#foo@override$169 end - unreachable + i32.const 1 end - local.get $0 i32.const 1 i32.ne if diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index 0d670977d1..7010a64dea 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 7d327ad961..3c9be357bf 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -1250,12 +1250,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1268,7 +1267,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -2793,31 +2794,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$168 - block $default88 - block $case189 + block $case189 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case189 - br $default88 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$168 + i32.const 13 + i32.eq + br_if $case189 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$168 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which @@ -2872,31 +2869,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$170 - block $default91 - block $case192 + block $case192 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case192 - br $default91 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$170 + i32.const 13 + i32.eq + br_if $case192 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$170 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat index 1ad255ed48..4606a6fbb3 100644 --- a/tests/compiler/class-override.release.wat +++ b/tests/compiler/class-override.release.wat @@ -1199,12 +1199,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 709d8b98a8..b12b7ec0ff 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -1314,8 +1314,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1343,7 +1341,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1357,7 +1356,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/closure-class.release.wat b/tests/compiler/closure-class.release.wat index 3c4ff77ab7..f8b427c4d6 100644 --- a/tests/compiler/closure-class.release.wat +++ b/tests/compiler/closure-class.release.wat @@ -1394,8 +1394,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1423,7 +1421,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1437,7 +1436,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/closure-complex.release.wat b/tests/compiler/closure-complex.release.wat index 084cbd3f3a..1a231b11df 100644 --- a/tests/compiler/closure-complex.release.wat +++ b/tests/compiler/closure-complex.release.wat @@ -1302,8 +1302,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1331,7 +1329,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1345,7 +1344,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/closure-stress.release.wat b/tests/compiler/closure-stress.release.wat index 94c5919cd9..5bc2ab7da7 100644 --- a/tests/compiler/closure-stress.release.wat +++ b/tests/compiler/closure-stress.release.wat @@ -1453,8 +1453,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1482,7 +1480,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1496,7 +1495,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat index a21272a066..a0e2e39d70 100644 --- a/tests/compiler/closure.release.wat +++ b/tests/compiler/closure.release.wat @@ -1329,8 +1329,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1358,7 +1356,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1372,7 +1371,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index f148c2c783..bd44325ced 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -1367,8 +1367,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1396,7 +1394,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1410,7 +1409,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index cc9e850111..a74aa2cee1 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 884c4ac4f5..c6ad744f1e 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -1321,8 +1321,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1350,7 +1348,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1364,7 +1363,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index 835318eea8..60ba1bf260 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -1323,8 +1323,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1352,7 +1350,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1366,7 +1365,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index 93458ccb2e..39fa33ddd9 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -1188,12 +1188,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1206,7 +1205,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/exceptions.release.wat b/tests/compiler/exceptions.release.wat index e7c535fd8a..e6734e697f 100644 --- a/tests/compiler/exceptions.release.wat +++ b/tests/compiler/exceptions.release.wat @@ -1694,8 +1694,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1723,7 +1721,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1737,7 +1736,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index 59a720ab7e..3958945a52 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -1221,12 +1221,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1238,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index 362864ade9..e36a454e9e 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -1325,8 +1325,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1354,7 +1352,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1368,7 +1367,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index ec3d3379c8..b2a8f23668 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -1301,8 +1301,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1330,7 +1328,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1344,7 +1343,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index 3b503a2dc3..55e3d75d57 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1325,8 +1325,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1354,7 +1352,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1368,7 +1367,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index 584b8fa6e0..25f4599ded 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -1308,8 +1308,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1337,7 +1335,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1351,7 +1350,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index 7057d52177..4f5cd4454a 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index 66384538e3..72c5c9d502 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index 05c90b6cbd..e020d0dbc1 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -1258,12 +1258,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1276,7 +1275,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 783083404e..91b7dd723f 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -1193,12 +1193,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1211,7 +1210,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index 6e951f8dd0..f2de1b91a6 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -841,8 +841,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $3 local.get $2 i32.const 256 i32.ge_u @@ -870,7 +868,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $3 + memory.size + local.tee $3 i32.const 16 i32.shl i32.const 4 @@ -884,7 +883,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.set $1 + local.get $3 + local.get $1 local.get $1 local.get $3 i32.lt_s diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat index 4697415cac..760b29720a 100644 --- a/tests/compiler/incremental-gc/call-indirect.release.wat +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -1309,8 +1309,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1338,7 +1336,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1352,7 +1351,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index ae5635a9ce..0d7c75bc2b 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -1347,8 +1347,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1376,7 +1374,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1390,7 +1389,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index 396c166f2d..f1fcb50c5f 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1330,8 +1330,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1359,7 +1357,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1373,7 +1372,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index c3c7bc696f..7bc9e39a8a 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1320,8 +1320,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1349,7 +1347,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1363,7 +1362,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index 8386c2cfe9..68f61b776b 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -1295,12 +1295,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1313,7 +1312,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index 4cb45461d9..949dbde2c7 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -1311,8 +1311,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1340,7 +1338,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1354,7 +1353,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index e978c5e5c9..205cad3fbf 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -1199,12 +1199,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index 0c790de5c0..c6100549d2 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -1318,8 +1318,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index 20351d0b4c..dacfc74fcd 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -1199,12 +1199,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1216,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 978cd62df4..bd360c78af 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -1302,8 +1302,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1331,7 +1329,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1345,7 +1344,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index 6f99a89570..94cedcbf3a 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -1228,12 +1228,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1246,7 +1245,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index dd54009adb..36e542e1a0 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1201,12 +1201,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1219,7 +1218,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index d01dc3539f..9bb44cb621 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -2521,8 +2521,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -2550,7 +2548,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -2564,7 +2563,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index 6fa36f750c..b42b52f7c7 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -1212,12 +1212,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1230,7 +1229,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 2d25a77ab8..87bd210897 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1194,12 +1194,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1212,7 +1211,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index a5e7b4d8ab..0b28936c2c 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -1230,12 +1230,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1248,7 +1247,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat index 422b76e0f6..a9497d26d6 100644 --- a/tests/compiler/number.release.wat +++ b/tests/compiler/number.release.wat @@ -1352,8 +1352,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1381,7 +1379,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1395,7 +1394,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index 990df61c2e..3faa2b458f 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -1318,8 +1318,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat index a90071aca0..138f30bfc5 100644 --- a/tests/compiler/operator-overload-non-ambiguity.release.wat +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index 6dc6ae0a01..516cc07607 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1216,12 +1216,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1234,7 +1233,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index 3d18fa1b6b..9707b7e9d5 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -1223,12 +1223,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1241,7 +1240,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index f44ada14ba..994e22bae1 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -1221,12 +1221,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1238,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index 8e24f5ea5e..53b8878a33 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -1329,8 +1329,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1358,7 +1356,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1372,7 +1371,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index 36ac64c3a6..36e85736b8 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -1534,8 +1534,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1563,7 +1561,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1577,7 +1576,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index fe4c53e8d0..74363984fa 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -1381,8 +1381,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1410,7 +1408,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1424,7 +1423,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index caec1eb0ef..3d865e3d5a 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -1441,8 +1441,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $8 i32.const 256 i32.ge_u @@ -1470,7 +1468,8 @@ i32.const 4 local.get $7 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1484,7 +1483,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.set $4 + local.get $2 + local.get $4 local.get $2 local.get $4 i32.gt_s diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index c257bebcd5..3f80d828b3 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -1195,12 +1195,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +1212,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index 485d5e07a3..d400d8c752 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -1343,8 +1343,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1372,7 +1370,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1386,7 +1385,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 52bcef8941..2060ec1869 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1349,8 +1349,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1378,7 +1376,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1392,7 +1391,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index 27dd4043af..68873852a5 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -1369,8 +1369,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1398,7 +1396,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1412,7 +1411,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index ba53254693..2fed091b9e 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -1313,8 +1313,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1342,7 +1340,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1356,7 +1355,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index d2a2a7e578..7636ff5bc6 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -767,8 +767,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $0 i32.const 256 i32.ge_u @@ -796,7 +794,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -810,7 +809,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index fc89593116..d0dc4e9402 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -1208,12 +1208,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1226,7 +1225,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat index bf34f3c3a5..f271cf7ad4 100644 --- a/tests/compiler/rt/issue-2719.release.wat +++ b/tests/compiler/rt/issue-2719.release.wat @@ -1303,8 +1303,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1332,7 +1330,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1346,7 +1345,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index 835318eea8..60ba1bf260 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -1323,8 +1323,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1352,7 +1350,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1366,7 +1365,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index 5fa9c43c62..a0520ab202 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -805,8 +805,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -834,7 +832,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -848,7 +847,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat index 7e9bfa5e34..5b2c01ab75 100644 --- a/tests/compiler/rt/runtime-stub-export.release.wat +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -26,7 +26,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $0 i32.const 1073741804 i32.gt_u @@ -41,7 +40,7 @@ local.get $0 i32.const 16 i32.add - local.tee $4 + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -53,34 +52,33 @@ unreachable end global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset i32.const 4 i32.add local.tee $2 - local.get $4 + local.get $3 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $4 + local.tee $3 i32.add - local.tee $5 + local.tee $4 memory.size - local.tee $6 + local.tee $5 i32.const 16 i32.shl i32.const 15 i32.add i32.const -16 i32.and - local.tee $7 + local.tee $6 i32.gt_u if - local.get $6 local.get $5 - local.get $7 + local.get $4 + local.get $6 i32.sub i32.const 65535 i32.add @@ -88,16 +86,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $7 + local.tee $6 + local.get $5 local.get $6 - local.get $7 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $7 + local.get $6 memory.grow i32.const 0 i32.lt_s @@ -106,9 +104,10 @@ end end end - local.get $5 - global.set $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset local.get $4 + global.set $~lib/rt/stub/offset + local.get $3 i32.store local.get $2 i32.const 4 diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index 4001b58533..dcaccc78b2 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -1281,8 +1281,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1310,7 +1308,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1324,7 +1323,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index e764ccf032..3cd3ebe37e 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1368,8 +1368,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1397,7 +1395,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1411,7 +1410,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index c74eb0e1dc..3c48ec495a 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -1906,8 +1906,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1935,7 +1933,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1949,7 +1948,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 564856a29c..77bb312a14 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -1318,8 +1318,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1347,7 +1345,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1361,7 +1360,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/byteslice.release.wat b/tests/compiler/std/byteslice.release.wat index cbc8796712..1465c110a0 100644 --- a/tests/compiler/std/byteslice.release.wat +++ b/tests/compiler/std/byteslice.release.wat @@ -1269,12 +1269,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1287,7 +1286,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index 405410210a..1d744d9863 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1326,8 +1326,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1355,7 +1353,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1369,7 +1368,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index 8c6b358bcc..af064c8adb 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -1709,8 +1709,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1738,7 +1736,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1752,7 +1751,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/fixedarray.release.wat b/tests/compiler/std/fixedarray.release.wat index 097e000e44..78dbf71b92 100644 --- a/tests/compiler/std/fixedarray.release.wat +++ b/tests/compiler/std/fixedarray.release.wat @@ -1331,8 +1331,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1360,7 +1358,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1374,7 +1373,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/fixedmap.release.wat b/tests/compiler/std/fixedmap.release.wat index 2f3b1640af..4150b0351c 100644 --- a/tests/compiler/std/fixedmap.release.wat +++ b/tests/compiler/std/fixedmap.release.wat @@ -1333,8 +1333,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1362,7 +1360,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1376,7 +1375,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/fixedset.release.wat b/tests/compiler/std/fixedset.release.wat index 2c0069f950..0d0f8e13fa 100644 --- a/tests/compiler/std/fixedset.release.wat +++ b/tests/compiler/std/fixedset.release.wat @@ -1322,8 +1322,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1351,7 +1349,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1365,7 +1364,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index f7c4d36296..ff751a14fd 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -1339,8 +1339,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1368,7 +1366,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1382,7 +1381,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 432d16ffda..ca7727d1db 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -2448,58 +2448,52 @@ f64.sub return end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 + block $break|0 (result f64) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 end - f64.const 0.4636476090008061 - local.get $4 - f64.const -2.2698777452961687e-17 - f64.add - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 + unreachable end - f64.const 0.7853981633974483 + f64.const 0.4636476090008061 local.get $4 - f64.const -3.061616997868383e-17 + f64.const -2.2698777452961687e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - f64.const 0.982793723247329 + f64.const 0.7853981633974483 local.get $4 - f64.const -1.3903311031230998e-17 + f64.const -3.061616997868383e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - f64.const 1.5707963267948966 + f64.const 0.982793723247329 local.get $4 - f64.const -6.123233995736766e-17 + f64.const -1.3903311031230998e-17 f64.add local.get $0 f64.sub f64.sub - local.set $0 br $break|0 end - unreachable + f64.const 1.5707963267948966 + local.get $4 + f64.const -6.123233995736766e-17 + f64.add + local.get $0 + f64.sub + f64.sub end - local.get $0 local.get $1 f64.copysign ) @@ -2640,58 +2634,52 @@ f32.sub return end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 + block $break|0 (result f32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 end - f32.const 0.46364760398864746 - local.get $4 - f32.const -5.01215824399992e-09 - f32.add - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 + unreachable end - f32.const 0.7853981256484985 + f32.const 0.46364760398864746 local.get $4 - f32.const -3.774894707930798e-08 + f32.const -5.01215824399992e-09 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - f32.const 0.9827936887741089 + f32.const 0.7853981256484985 local.get $4 - f32.const -3.447321716976148e-08 + f32.const -3.774894707930798e-08 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - f32.const 1.570796251296997 + f32.const 0.9827936887741089 local.get $4 - f32.const -7.549789415861596e-08 + f32.const -3.447321716976148e-08 f32.add local.get $0 f32.sub f32.sub - local.set $0 br $break|0 end - unreachable + f32.const 1.570796251296997 + local.get $4 + f32.const -7.549789415861596e-08 + f32.add + local.get $0 + f32.sub + f32.sub end - local.get $0 local.get $1 f32.copysign ) @@ -49890,7 +49878,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49934,7 +49922,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49956,7 +49944,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50022,7 +50010,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50088,7 +50076,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50154,7 +50142,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50242,7 +50230,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50352,7 +50340,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50506,7 +50494,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -51738,7 +51726,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51764,7 +51752,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51777,7 +51765,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51816,7 +51804,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51855,7 +51843,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51894,7 +51882,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51946,7 +51934,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52011,7 +51999,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52037,7 +52025,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index b1b3038661..f2859a69d4 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -1195,12 +1195,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +1212,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 5cabd49c8c..b45306985b 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -1260,12 +1260,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1278,7 +1277,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index ba7a4b0df9..3631b5ebab 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -1330,8 +1330,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1359,7 +1357,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1373,7 +1372,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index a84b5a1e7d..930af5b2fc 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -1547,8 +1547,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $8 i32.const 256 i32.ge_u @@ -1576,7 +1574,8 @@ i32.const 4 local.get $7 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1590,7 +1589,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 + local.set $5 + local.get $1 + local.get $5 local.get $1 local.get $5 i32.gt_s diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 8d41612f9f..e602267983 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -1408,8 +1408,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1437,7 +1435,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1451,7 +1450,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index 272404c8ed..9c00548df6 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -1757,8 +1757,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1786,7 +1784,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1800,7 +1799,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index b59cdbe7de..6273a5c4ab 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -1344,8 +1344,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1373,7 +1371,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1387,7 +1386,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index 650b709edc..feebb51785 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -2354,8 +2354,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -2383,7 +2381,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -2397,7 +2396,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index f799de9760..2258466822 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1411,8 +1411,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1440,7 +1438,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1454,7 +1453,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index 0d0fdf9178..95c4d549c7 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -1914,8 +1914,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $3 i32.const 256 i32.ge_u @@ -1943,7 +1941,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1957,7 +1956,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index 404ff1e18b..50a93d93f4 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -1424,8 +1424,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1453,7 +1451,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1467,7 +1466,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 8e2dfacc3b..ccfffb3888 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -1202,12 +1202,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1220,7 +1219,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat index 290a9437ae..fdb33c88a0 100644 --- a/tests/compiler/switch.release.wat +++ b/tests/compiler/switch.release.wat @@ -1346,8 +1346,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1375,7 +1373,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1389,7 +1388,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index b233c956c6..57f850c54f 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -1417,8 +1417,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1446,7 +1444,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1460,7 +1459,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s diff --git a/tests/compiler/throw-invalid-type.json b/tests/compiler/throw-invalid-type.json index 2b26ae17bc..54592b9eb2 100644 --- a/tests/compiler/throw-invalid-type.json +++ b/tests/compiler/throw-invalid-type.json @@ -3,7 +3,7 @@ "--enable", "exception-handling" ], "stderr": [ - "AS241: Only Error or its subclasses can be thrown, but found type '~lib/string/String'.", + "AS250: Only Error or its subclasses can be thrown, but found type '~lib/string/String'.", "EOF" ] } diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index d96db20f44..7637361f51 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -1183,8 +1183,6 @@ i32.store i32.const 1584 global.set $~lib/rt/itcms/fromSpace - memory.size - drop global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index eef2083fbc..2079172e9d 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -1218,12 +1218,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1236,7 +1235,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index b00fb6c46c..36cd3f6163 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -1190,12 +1190,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1207,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s diff --git a/tsconfig-base.json b/tsconfig-base.json index 10a2d884e4..9695cb47c4 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -8,7 +8,6 @@ "noEmitOnError": true, "strictNullChecks": true, "experimentalDecorators": true, - "preserveConstEnums": false, - "downlevelIteration": true + "preserveConstEnums": false } }