From 01d900e83d8175a9230d434777daf6fa1ab7acb8 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:14:59 -0400 Subject: [PATCH 1/4] Upgrade dev tooling and simplify ESLint Bump development dependencies (ESLint toolchain, TypeScript, esbuild, @typescript-eslint and related packages) and regenerate the lockfile. Remove the custom "indent" rule from eslint.config.js to simplify formatting/style enforcement. Apply small, related adjustments in tsconfig-base.json, std/assembly/util/number.ts and tests/allocators/runner.js. --- eslint.config.js | 13 - package-lock.json | 548 ++++++++++++++++++------------------ package.json | 20 +- std/assembly/util/number.ts | 4 +- tests/allocators/runner.js | 2 +- tsconfig-base.json | 3 +- 6 files changed, 295 insertions(+), 295 deletions(-) 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/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..5b6fb47432 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": { 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/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 } } From c17caa2630ba7e6c86361044041f0d3361420ac3 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Sun, 26 Apr 2026 01:18:21 -0400 Subject: [PATCH 2/4] Update Binaryen bindings & codegen for API changes Adapt project to updated Binaryen / wasm IR and toolchain behavior. Key changes: - Updated TypeScript glue for Binaryen: use bigint for i64/f64-bits literals, add MemoryOrder parameter to atomic ops and default to SeqCst, change AtomicFence signature, adjust string/table/memory segment APIs, and rename/fix several function signatures to match the new Binaryen runtime. - Modified module.ts to add new feature flags, expression ids, MemoryOrder enum, atomic helpers that pass the memory order, updated i64 literal construction to use BigInt, and added addTable helper handling addressType. - Pre-create default memory in compiler.ts so Binaryen helpers can resolve memory references earlier in compilation. - build-dts.js: drop side-effect-only imports when generating declaration bundles to avoid TS2882 with nodenext resolution. - package.json: relax/adjust tsc script flags for config and ignoreConfig to better fit the build/check workflows. - Updated many emitted .wat tests to reflect new codegen (reordered memory.size usage, local.set vs local.tee changes, br_table target canonicalization, stack handling and inlining/folding changes, etc.). These updates align the codebase with the newer Binaryen API and ensure correct declaration output and wasm code generation under the updated toolchain. --- package.json | 4 +- scripts/build-dts.js | 7 + src/compiler.ts | 6 + src/glue/binaryen.d.ts | 36 ++- src/glue/binaryen.js | 10 +- src/module.ts | 117 +++++---- tests/compiler/assignment-chain.release.wat | 9 +- tests/compiler/bindings/esm.release.wat | 9 +- .../bindings/noExportRuntime.release.wat | 9 +- tests/compiler/bindings/raw.release.wat | 9 +- tests/compiler/builtins.release.wat | 4 - tests/compiler/call-inferred.release.wat | 9 +- tests/compiler/call-rest.release.wat | 9 +- tests/compiler/call-super.release.wat | 9 +- tests/compiler/class-implements.release.wat | 239 +++++++++--------- .../class-overloading-cast.release.wat | 9 +- tests/compiler/class-overloading.release.wat | 81 +++--- tests/compiler/class-override.release.wat | 9 +- tests/compiler/class.release.wat | 9 +- tests/compiler/closure-class.release.wat | 9 +- tests/compiler/closure-complex.release.wat | 9 +- tests/compiler/closure-stress.release.wat | 9 +- tests/compiler/closure.release.wat | 9 +- tests/compiler/constructor.release.wat | 9 +- tests/compiler/do.release.wat | 9 +- tests/compiler/duplicate-fields.release.wat | 9 +- .../compiler/empty-exportruntime.release.wat | 9 +- tests/compiler/empty-new.release.wat | 9 +- tests/compiler/exceptions.release.wat | 9 +- .../exportstar-rereexport.release.wat | 9 +- .../extends-baseaggregate.release.wat | 9 +- tests/compiler/extends-recursive.release.wat | 9 +- .../compiler/field-initialization.release.wat | 9 +- tests/compiler/field.release.wat | 9 +- tests/compiler/for.release.wat | 9 +- tests/compiler/function-call.release.wat | 9 +- .../compiler/function-expression.release.wat | 9 +- tests/compiler/getter-call.release.wat | 9 +- tests/compiler/heap.release.wat | 9 +- .../incremental-gc/call-indirect.release.wat | 9 +- tests/compiler/infer-array.release.wat | 9 +- tests/compiler/infer-generic.release.wat | 9 +- tests/compiler/inlining.release.wat | 9 +- tests/compiler/instanceof.release.wat | 9 +- tests/compiler/issues/1095.release.wat | 9 +- tests/compiler/issues/1225.release.wat | 9 +- tests/compiler/issues/1699.release.wat | 9 +- tests/compiler/issues/2166.release.wat | 9 +- tests/compiler/issues/2322/index.release.wat | 9 +- tests/compiler/issues/2622.release.wat | 9 +- tests/compiler/issues/2707.release.wat | 9 +- tests/compiler/issues/2873.release.wat | 9 +- tests/compiler/logical.release.wat | 9 +- tests/compiler/managed-cast.release.wat | 9 +- tests/compiler/new.release.wat | 9 +- tests/compiler/number.release.wat | 9 +- tests/compiler/object-literal.release.wat | 9 +- ...perator-overload-non-ambiguity.release.wat | 9 +- .../optional-typeparameters.release.wat | 9 +- tests/compiler/reexport.release.wat | 9 +- tests/compiler/rereexport.release.wat | 9 +- tests/compiler/resolve-access.release.wat | 9 +- tests/compiler/resolve-binary.release.wat | 9 +- .../resolve-elementaccess.release.wat | 9 +- .../resolve-function-expression.release.wat | 9 +- tests/compiler/resolve-new.release.wat | 9 +- .../resolve-propertyaccess.release.wat | 9 +- tests/compiler/resolve-ternary.release.wat | 9 +- tests/compiler/resolve-unary.release.wat | 9 +- tests/compiler/return-unreachable.release.wat | 9 +- .../rt/alloc-large-memory.release.wat | 9 +- tests/compiler/rt/finalize.release.wat | 9 +- tests/compiler/rt/issue-2719.release.wat | 9 +- .../rt/runtime-incremental-export.release.wat | 9 +- .../rt/runtime-minimal-export.release.wat | 9 +- .../rt/runtime-stub-export.release.wat | 29 +-- tests/compiler/simd.release.wat | 9 +- tests/compiler/std/array-literal.release.wat | 9 +- tests/compiler/std/array.release.wat | 9 +- tests/compiler/std/arraybuffer.release.wat | 9 +- tests/compiler/std/byteslice.release.wat | 9 +- tests/compiler/std/dataview.release.wat | 9 +- tests/compiler/std/date.release.wat | 9 +- tests/compiler/std/fixedarray.release.wat | 9 +- tests/compiler/std/fixedmap.release.wat | 9 +- tests/compiler/std/fixedset.release.wat | 9 +- tests/compiler/std/map.release.wat | 9 +- tests/compiler/std/math.release.wat | 132 +++++----- tests/compiler/std/new.release.wat | 9 +- .../std/operator-overloading.release.wat | 9 +- tests/compiler/std/set.release.wat | 9 +- tests/compiler/std/static-array.release.wat | 9 +- tests/compiler/std/staticarray.release.wat | 9 +- .../std/string-casemapping.release.wat | 9 +- .../compiler/std/string-encoding.release.wat | 9 +- tests/compiler/std/string.release.wat | 9 +- tests/compiler/std/symbol.release.wat | 9 +- tests/compiler/std/typedarray.release.wat | 9 +- tests/compiler/std/uri.release.wat | 9 +- tests/compiler/super-inline.release.wat | 9 +- tests/compiler/switch.release.wat | 9 +- tests/compiler/templateliteral.release.wat | 9 +- tests/compiler/throw-invalid-type.json | 2 +- tests/compiler/throw.release.wat | 2 - tests/compiler/typeof.release.wat | 9 +- tests/compiler/while.release.wat | 9 +- 106 files changed, 795 insertions(+), 711 deletions(-) diff --git a/package.json b/package.json index 5b6fb47432..bf88e0df7f 100644 --- a/package.json +++ b/package.json @@ -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..c739a82a4d 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -268,6 +268,13 @@ const generate = (() => { output.push(`declare module '${resolvedModuleId}' {\n\t`); const content = processTree(declarationFile, node => { if (node.kind === ts.SyntaxKind.DeclareKeyword) return ""; + // Drop side-effect-only imports (`import "x";`). They are only + // meaningful at runtime; in a declaration file they would require + // the referenced module to be declared (TS2882 in TS >= 6 with + // nodenext module resolution). + if (isNodeKindImportDeclaration(node) && !node.importClause) { + return ""; + } if ( isNodeKindStringLiteral(node) && (isNodeKindExportDeclaration(node.parent) || isNodeKindImportDeclaration(node.parent)) diff --git a/src/compiler.ts b/src/compiler.ts index 56467d4f67..6f3758c091 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); diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index fdc2bd7492..7e06120952 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -95,12 +95,12 @@ 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; +export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, value: bigint): 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; +export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, value: bigint): void; export declare function _BinaryenExpressionGetId(expr: ExpressionRef): ExpressionId; export declare function _BinaryenExpressionGetType(expr: ExpressionRef): TypeRef; @@ -216,7 +216,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 +227,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 +244,13 @@ 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; -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 _BinaryenConstGetValueI64(expr: ExpressionRef): bigint; +export declare function _BinaryenConstSetValueI64(expr: ExpressionRef, value: bigint): 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 +292,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 +304,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 +332,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 +517,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 +545,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 +697,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 +817,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 +836,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 _BinaryenGetMemorySegmentByteLength(segmentRef: Ref): usize; +export declare function _BinaryenCopyMemorySegmentData(segmentRef: Ref, 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..50efd4d04d 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, @@ -211,10 +209,8 @@ export const { _BinaryenConst, _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, - _BinaryenConstGetValueI64Low, - _BinaryenConstSetValueI64Low, - _BinaryenConstGetValueI64High, - _BinaryenConstSetValueI64High, + _BinaryenConstGetValueI64, + _BinaryenConstSetValueI64, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, _BinaryenConstGetValueF64, @@ -481,7 +477,7 @@ export const { _BinaryenRethrow, _BinaryenRethrowGetTarget, - _BinaryenRethrowSetDepth, + _BinaryenRethrowSetTarget, _BinaryenTupleMake, _BinaryenTupleMakeGetNumOperands, diff --git a/src/module.ts b/src/module.ts index fede5675f1..96f64cd4d1 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. */ @@ -1349,7 +1357,7 @@ export class Module { i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef { let out = this.lit; - binaryen._BinaryenLiteralInt64(out, valueLow, valueHigh); + binaryen._BinaryenLiteralInt64(out, (BigInt(valueHigh) << 32n) | BigInt(valueLow >>> 0)); return binaryen._BinaryenConst(this.ref, out); } @@ -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); @@ -3031,11 +3054,11 @@ export function getConstValueI32(expr: ExpressionRef): i32 { } export function getConstValueI64Low(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64Low(expr); + return Number(BigInt.asIntN(32, binaryen._BinaryenConstGetValueI64(expr))); } export function getConstValueI64High(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64High(expr); + return Number(BigInt.asIntN(32, binaryen._BinaryenConstGetValueI64(expr) >> 32n)); } export function getConstValueInteger(expr: ExpressionRef, isWasm64: bool): i64 { 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 From 16152150a3ced3b6c9c009394be79bee1bbce50b Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Sun, 26 Apr 2026 23:29:45 -0400 Subject: [PATCH 3/4] Add DataSegmentRef, emit module stub, check dup funcs Multiple changes: - scripts/build-dts.js: Removed the previous drop-for-side-effect-only-imports logic and instead emit an explicit empty module stub for 'src/glue/js/index' to avoid TS2882 under TS >= 6 (nod e n e x t module resolution) while keeping the ambient declarations already emitted. - src/compiler.ts: Add a duplicate-function check for semantically named declarations that compares source and start position to distinguish recompilation from true duplicate implementations; emit DiagnosticCode.Duplicate_function_implementation and return unreachable on error. Also minor reordering of the local module variable. - src/glue/binaryen.d.ts: Introduce DataSegmentRef = Ref and update Binaryen memory segment APIs to use DataSegmentRef for segment parameters (get offset/length and copy functions). These changes fix TypeScript declaration generation issues, improve duplicate-implementation detection, and correct Binaryen typings for data segments. --- scripts/build-dts.js | 17 ++++++++++------- src/compiler.ts | 17 ++++++++++++++++- src/glue/binaryen.d.ts | 7 ++++--- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/scripts/build-dts.js b/scripts/build-dts.js index c739a82a4d..ead29c6964 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -268,13 +268,6 @@ const generate = (() => { output.push(`declare module '${resolvedModuleId}' {\n\t`); const content = processTree(declarationFile, node => { if (node.kind === ts.SyntaxKind.DeclareKeyword) return ""; - // Drop side-effect-only imports (`import "x";`). They are only - // meaningful at runtime; in a declaration file they would require - // the referenced module to be declared (TS2882 in TS >= 6 with - // nodenext module resolution). - if (isNodeKindImportDeclaration(node) && !node.importClause) { - return ""; - } if ( isNodeKindStringLiteral(node) && (isNodeKindExportDeclaration(node.parent) || isNodeKindImportDeclaration(node.parent)) @@ -357,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 6f3758c091..d66a87c934 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7833,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; @@ -7853,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); @@ -7882,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 7e06120952..078376af23 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; @@ -842,9 +843,9 @@ export declare function _BinaryenGetElementSegmentByIndex(module: ModuleRef, ind 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(segmentRef: Ref): usize; -export declare function _BinaryenCopyMemorySegmentData(segmentRef: Ref, 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; From ed69abb2d09beb242c32b7cf21f53b62465e255b Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:56:58 -0400 Subject: [PATCH 4/4] Shim Binaryen i64 API to low/high convention Add a JS wrapper that patches the binaryen export to provide (low, high) i64 literal/const accessors on top of binaryen 129's BigInt-based C-ABI (with a sentinel to avoid double-patching). Update TypeScript declarations and glue to reflect the new low/high signatures, re-export the wrapped functions, and adjust Module usages to call the new APIs (including replacing inline BigInt packing and adding explicit casts for MemoryOrder in atomic ops). This preserves compatibility with AssemblyScript callers and the bootstrapped wasm host shim that expect the legacy split i64 convention. --- lib/binaryen.d.ts | 9 +++++++ lib/binaryen.js | 59 +++++++++++++++++++++++++++++++++++++++++- src/glue/binaryen.d.ts | 16 +++++++++--- src/glue/binaryen.js | 12 +++++++-- src/module.ts | 14 +++++----- 5 files changed, 96 insertions(+), 14 deletions(-) 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/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 078376af23..ea2e846432 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -96,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, value: bigint): 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, value: bigint): 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; @@ -250,8 +254,12 @@ export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, of 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; -export declare function _BinaryenConstGetValueI64(expr: ExpressionRef): bigint; -export declare function _BinaryenConstSetValueI64(expr: ExpressionRef, value: bigint): 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 _BinaryenConstGetValueI64High(expr: ExpressionRef): i32; +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; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 50efd4d04d..60e4036e4d 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -209,8 +209,10 @@ export const { _BinaryenConst, _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, - _BinaryenConstGetValueI64, - _BinaryenConstSetValueI64, + _BinaryenConstGetValueI64Low, + _BinaryenConstGetValueI64High, + _BinaryenConstSetValueI64Low, + _BinaryenConstSetValueI64High, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, _BinaryenConstGetValueF64, @@ -914,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 96f64cd4d1..142e53c74c 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1357,7 +1357,7 @@ export class Module { i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef { let out = this.lit; - binaryen._BinaryenLiteralInt64(out, (BigInt(valueHigh) << 32n) | BigInt(valueLow >>> 0)); + binaryen._BinaryenLiteralInt64(out, valueLow, valueHigh); return binaryen._BinaryenConst(this.ref, out); } @@ -1591,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, MemoryOrder.SeqCst); + return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr, MemoryOrder.SeqCst); } atomic_store( @@ -1603,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, MemoryOrder.SeqCst); + return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr, MemoryOrder.SeqCst); } atomic_rmw( @@ -1616,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, MemoryOrder.SeqCst); + return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr, MemoryOrder.SeqCst); } atomic_cmpxchg( @@ -1629,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, MemoryOrder.SeqCst); + return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr, MemoryOrder.SeqCst); } atomic_wait( @@ -3054,11 +3054,11 @@ export function getConstValueI32(expr: ExpressionRef): i32 { } export function getConstValueI64Low(expr: ExpressionRef): i32 { - return Number(BigInt.asIntN(32, binaryen._BinaryenConstGetValueI64(expr))); + return binaryen._BinaryenConstGetValueI64Low(expr); } export function getConstValueI64High(expr: ExpressionRef): i32 { - return Number(BigInt.asIntN(32, binaryen._BinaryenConstGetValueI64(expr) >> 32n)); + return binaryen._BinaryenConstGetValueI64High(expr); } export function getConstValueInteger(expr: ExpressionRef, isWasm64: bool): i64 {